LCOV - code coverage report
Current view: top level - zephyr/drivers/modem - simcom-sim7080.h Coverage Total Hit
Test: new.info Lines: 52.2 % 46 24
Test Date: 2025-09-05 16:43:28

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (C) 2021 metraTec GmbH
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : #ifndef ZEPHYR_INCLUDE_DRIVERS_MODEM_SIMCOM_SIM7080_H
       8              : #define ZEPHYR_INCLUDE_DRIVERS_MODEM_SIMCOM_SIM7080_H
       9              : 
      10              : #include <zephyr/types.h>
      11              : 
      12              : #include <stdint.h>
      13              : 
      14              : #ifdef __cplusplus
      15              : extern "C" {
      16              : #endif
      17              : 
      18            0 : #define SIM7080_GNSS_DATA_UTC_LEN 20
      19            0 : #define SIM7080_SMS_MAX_LEN 160
      20              : 
      21            0 : struct sim7080_gnss_data {
      22              :         /**
      23              :          * Whether gnss is powered or not.
      24              :          */
      25            1 :         bool run_status;
      26              :         /**
      27              :          * Whether fix is acquired or not.
      28              :          */
      29            1 :         bool fix_status;
      30              :         /**
      31              :          * UTC in format yyyyMMddhhmmss.sss
      32              :          */
      33            1 :         char utc[SIM7080_GNSS_DATA_UTC_LEN];
      34              :         /**
      35              :          * Latitude in 10^-7 degree.
      36              :          */
      37            1 :         int32_t lat;
      38              :         /**
      39              :          * Longitude in 10^-7 degree.
      40              :          */
      41            1 :         int32_t lon;
      42              :         /**
      43              :          * Altitude in mm.
      44              :          */
      45            1 :         int32_t alt;
      46              :         /**
      47              :          * Horizontal dilution of precision in 10^-2.
      48              :          */
      49            1 :         uint16_t hdop;
      50              :         /**
      51              :          * Course over ground un 10^-2 degree.
      52              :          */
      53            1 :         uint16_t cog;
      54              :         /**
      55              :          * Speed in 10^-1 km/h.
      56              :          */
      57            1 :         uint16_t kmh;
      58              : };
      59              : 
      60              : /**
      61              :  * Possible sms states in memory.
      62              :  */
      63            0 : enum sim7080_sms_stat {
      64              :         SIM7080_SMS_STAT_REC_UNREAD = 0,
      65              :         SIM7080_SMS_STAT_REC_READ,
      66              :         SIM7080_SMS_STAT_STO_UNSENT,
      67              :         SIM7080_SMS_STAT_STO_SENT,
      68              :         SIM7080_SMS_STAT_ALL,
      69              : };
      70              : 
      71              : /**
      72              :  * Possible ftp return codes.
      73              :  */
      74            0 : enum sim7080_ftp_rc {
      75              :         /* Operation finished correctly. */
      76              :         SIM7080_FTP_RC_OK = 0,
      77              :         /* Session finished. */
      78              :         SIM7080_FTP_RC_FINISHED,
      79              :         /* An error occurred. */
      80              :         SIM7080_FTP_RC_ERROR,
      81              : };
      82              : 
      83              : /**
      84              :  * Buffer structure for sms.
      85              :  */
      86            1 : struct sim7080_sms {
      87              :         /* First octet of the sms. */
      88            0 :         uint8_t first_octet;
      89              :         /* Message protocol identifier. */
      90            0 :         uint8_t tp_pid;
      91              :         /* Status of the sms in memory. */
      92            0 :         enum sim7080_sms_stat stat;
      93              :         /* Index of the sms in memory. */
      94            0 :         uint16_t index;
      95              :         /* Time the sms was received. */
      96              :         struct {
      97            0 :                 uint8_t year;
      98            0 :                 uint8_t month;
      99            0 :                 uint8_t day;
     100            0 :                 uint8_t hour;
     101            0 :                 uint8_t minute;
     102            0 :                 uint8_t second;
     103            0 :                 uint8_t timezone;
     104            0 :         } time;
     105              :         /* Buffered sms. */
     106            0 :         char data[SIM7080_SMS_MAX_LEN + 1];
     107              :         /* Length of the sms in buffer. */
     108            0 :         uint8_t data_len;
     109              : };
     110              : 
     111              : /**
     112              :  * Buffer structure for sms reads.
     113              :  */
     114            1 : struct sim7080_sms_buffer {
     115              :         /* sms structures to read to. */
     116            0 :         struct sim7080_sms *sms;
     117              :         /* Number of sms structures. */
     118            0 :         uint8_t nsms;
     119              : };
     120              : 
     121              : /**
     122              :  * @brief Power on the Sim7080.
     123              :  *
     124              :  * @return 0 on success. Otherwise -1 is returned.
     125              :  */
     126            1 : int mdm_sim7080_power_on(void);
     127              : 
     128              : /**
     129              :  * @brief Power off the Sim7080.
     130              :  *
     131              :  * @return 0 on success. Otherwise -1 is returned.
     132              :  */
     133            1 : int mdm_sim7080_power_off(void);
     134              : 
     135              : /**
     136              :  * @brief Starts the modem in network operation mode.
     137              :  *
     138              :  * @return 0 on success. Otherwise <0 is returned.
     139              :  */
     140            1 : int mdm_sim7080_start_network(void);
     141              : 
     142              : /**
     143              :  * @brief Starts the modem in gnss operation mode.
     144              :  *
     145              :  * @return 0 on success. Otherwise <0 is returned.
     146              :  */
     147            1 : int mdm_sim7080_start_gnss(void);
     148              : 
     149              : /**
     150              :  * @brief Query gnss position form the modem.
     151              :  *
     152              :  * @return 0 on success. If no fix is acquired yet -EAGAIN is returned.
     153              :  *         Otherwise <0 is returned.
     154              :  */
     155            1 : int mdm_sim7080_query_gnss(struct sim7080_gnss_data *data);
     156              : 
     157              : /**
     158              :  * Get the sim7080 manufacturer.
     159              :  */
     160            1 : const char *mdm_sim7080_get_manufacturer(void);
     161              : 
     162              : /**
     163              :  * Get the sim7080 model information.
     164              :  */
     165            1 : const char *mdm_sim7080_get_model(void);
     166              : 
     167              : /**
     168              :  * Get the sim7080 revision.
     169              :  */
     170            1 : const char *mdm_sim7080_get_revision(void);
     171              : 
     172              : /**
     173              :  * Get the sim7080 imei number.
     174              :  */
     175            1 : const char *mdm_sim7080_get_imei(void);
     176              : 
     177              : /**
     178              :  * Read sms from sim module.
     179              :  *
     180              :  * @param buffer Buffer structure for sms.
     181              :  * @return Number of sms read on success. Otherwise -1 is returned.
     182              :  *
     183              :  * @note The buffer structure needs to be initialized to
     184              :  * the size of the sms buffer. When this function finishes
     185              :  * successful, nsms will be set to the number of sms read.
     186              :  * If the whole structure is filled a subsequent read may
     187              :  * be needed.
     188              :  */
     189            1 : int mdm_sim7080_read_sms(struct sim7080_sms_buffer *buffer);
     190              : 
     191              : /**
     192              :  * Delete a sms at a given index.
     193              :  *
     194              :  * @param index The index of the sms in memory.
     195              :  * @return 0 on success. Otherwise -1 is returned.
     196              :  */
     197            1 : int mdm_sim7080_delete_sms(uint16_t index);
     198              : 
     199              : /**
     200              :  * Start a ftp get session.
     201              :  *
     202              :  * @param server The ftp servers address.
     203              :  * @param user User name for the ftp server.
     204              :  * @param passwd Password for the ftp user.
     205              :  * @param file File to be downloaded.
     206              :  * @param path Path to the file on the server.
     207              :  * @return 0 if the session was started. Otherwise -1 is returned.
     208              :  */
     209            1 : int mdm_sim7080_ftp_get_start(const char *server, const char *user, const char *passwd,
     210              :                                   const char *file, const char *path);
     211              : 
     212              : /**
     213              :  * Read data from a ftp get session.
     214              :  *
     215              :  * @param dst The destination buffer.
     216              :  * @param size Initialize to the size of dst. Gets set to the number
     217              :  *             of bytes actually read.
     218              :  * @return According sim7080_ftp_rc.
     219              :  */
     220            1 : int mdm_sim7080_ftp_get_read(char *dst, size_t *size);
     221              : 
     222              : #ifdef __cplusplus
     223              : }
     224              : #endif
     225              : 
     226              : #endif /* ZEPHYR_INCLUDE_DRIVERS_MODEM_SIMCOM_SIM7080_H */
        

Generated by: LCOV version 2.0-1