Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
UbloxCellularBase.h
00001 /* Copyright (c) 2017 ARM Limited 00002 * 00003 * Licensed under the Apache License, Version 2.0 (the "License"); 00004 * you may not use this file except in compliance with the License. 00005 * You may obtain a copy of the License at 00006 * 00007 * http://www.apache.org/licenses/LICENSE-2.0 00008 * 00009 * Unless required by applicable law or agreed to in writing, software 00010 * distributed under the License is distributed on an "AS IS" BASIS, 00011 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00012 * See the License for the specific language governing permissions and 00013 * limitations under the License. 00014 */ 00015 00016 #ifndef _UBLOX_CELLULAR_BASE_ 00017 #define _UBLOX_CELLULAR_BASE_ 00018 00019 #include "mbed.h" 00020 #include "mbed_toolchain.h" // for MBED_DEPRECATED 00021 #include "ATCmdParser.h" 00022 #include "FileHandle.h" 00023 00024 /********************************************************************** 00025 * CLASSES 00026 **********************************************************************/ 00027 00028 /** UbloxCellularBase class. 00029 * 00030 * This class provides all the base support for generic u-blox modems 00031 * on C030 and C027 boards: module identification, power-up, network 00032 * registration, etc. 00033 */ 00034 class UbloxCellularBase { 00035 00036 public: 00037 /** Circuit Switched network registration status (CREG Usage). 00038 * UBX-13001820 - AT Commands Example Application Note (Section 7.10.3). 00039 */ 00040 typedef enum { 00041 CSD_NOT_REGISTERED_NOT_SEARCHING = 0, 00042 CSD_REGISTERED = 1, 00043 CSD_NOT_REGISTERED_SEARCHING = 2, 00044 CSD_REGISTRATION_DENIED = 3, 00045 CSD_UNKNOWN_COVERAGE = 4, 00046 CSD_REGISTERED_ROAMING = 5, 00047 CSD_SMS_ONLY = 6, 00048 CSD_SMS_ONLY_ROAMING = 7, 00049 CSD_CSFB_NOT_PREFERRED = 9 00050 } NetworkRegistrationStatusCsd; 00051 00052 /** Packet Switched network registration status (CGREG Usage). 00053 * UBX-13001820 - AT Commands Example Application Note (Section 18.27.3). 00054 */ 00055 typedef enum { 00056 PSD_NOT_REGISTERED_NOT_SEARCHING = 0, 00057 PSD_REGISTERED = 1, 00058 PSD_NOT_REGISTERED_SEARCHING = 2, 00059 PSD_REGISTRATION_DENIED = 3, 00060 PSD_UNKNOWN_COVERAGE = 4, 00061 PSD_REGISTERED_ROAMING = 5, 00062 PSD_EMERGENCY_SERVICES_ONLY = 8 00063 } NetworkRegistrationStatusPsd; 00064 00065 /** EPS network registration status (CEREG Usage). 00066 * UBX-13001820 - AT Commands Example Application Note (Section 18.36.3). 00067 */ 00068 typedef enum { 00069 EPS_NOT_REGISTERED_NOT_SEARCHING = 0, 00070 EPS_REGISTERED = 1, 00071 EPS_NOT_REGISTERED_SEARCHING = 2, 00072 EPS_REGISTRATION_DENIED = 3, 00073 EPS_UNKNOWN_COVERAGE = 4, 00074 EPS_REGISTERED_ROAMING = 5, 00075 EPS_EMERGENCY_SERVICES_ONLY = 8 00076 } NetworkRegistrationStatusEps; 00077 00078 /** modem PSM states. 00079 * 00080 */ 00081 typedef enum { 00082 AWAKE = 0, 00083 ASLEEP = 1 00084 } ModemPSMState; 00085 00086 /** Initialise the modem, ready for use. 00087 * 00088 * @param pin PIN for the SIM card. 00089 * @return true if successful, otherwise false. 00090 */ 00091 bool init(const char *pin = 0); 00092 00093 /** Perform registration with the network. 00094 * 00095 * @return true if successful, otherwise false. 00096 */ 00097 bool nwk_registration(); 00098 00099 /** True if the modem is registered for circuit 00100 * switched data, otherwise false. 00101 */ 00102 bool is_registered_csd(); 00103 00104 /** True if the modem is registered for packet 00105 * switched data, otherwise false. 00106 */ 00107 bool is_registered_psd(); 00108 00109 /** True if the modem is registered for enhanced 00110 * packet switched data (i.e. LTE and beyond), 00111 * otherwise false. 00112 */ 00113 bool is_registered_eps(); 00114 00115 /** Perform deregistration from the network. 00116 * 00117 * @return true if successful, otherwise false. 00118 */ 00119 bool nwk_deregistration(); 00120 00121 /** Put the modem into its lowest power state. 00122 */ 00123 void deinit(); 00124 00125 /** Set the PIN code for the SIM card. 00126 * 00127 * @param pin PIN for the SIM card. 00128 */ 00129 void set_pin(const char *pin); 00130 00131 /** Enable or disable SIM pin checking. 00132 * 00133 * @param enableNotDisable true if SIM PIN checking is to be enabled, 00134 * otherwise false. 00135 * @return true if successful, otherwise false. 00136 */ 00137 bool sim_pin_check_enable(bool enableNotDisable); 00138 00139 /** Change the SIM pin. 00140 * 00141 * @param new_pin the new PIN to use. 00142 * @return true if successful, otherwise false. 00143 */ 00144 bool change_sim_pin(const char *new_pin); 00145 00146 /** Get the IMEI. 00147 * 00148 * @return true if successful, otherwise false. 00149 */ 00150 MBED_DEPRECATED("This method is now replaced by const char * imei(), please use that instead") 00151 bool get_imei(char *imei_to_send, int size); 00152 00153 /** Get the IMEI of the module. 00154 * 00155 * @return a pointer to the IMEI as a null-terminated string. 00156 */ 00157 const char *imei(); 00158 00159 /** Get the Mobile Equipment ID (which may be the same as the IMEI). 00160 * 00161 * @return a pointer to the Mobile Equipment ID as a null-terminated string. 00162 */ 00163 const char *meid(); 00164 00165 /** Get the IMSI of the SIM. 00166 * 00167 * @return a pointer to the IMSI as a null-terminated string. 00168 */ 00169 const char *imsi(); 00170 00171 /** Get the ICCID of the SIM. 00172 * 00173 * @return a pointer to the ICCID as a null-terminated string. 00174 */ 00175 const char *iccid(); 00176 00177 /** Get the RSSI. 00178 * 00179 * @return the RSSI in dBm. If it is not possible to obtain an 00180 * RSSI reading at the time (e.g. because the modem is in 00181 * data mode rather than AT command mode) then 0 is returned. 00182 */ 00183 int rssi(); 00184 00185 /** RAT values for +URAT command 00186 * R412M only supports value 7 (CatM1), 8 (NB1), and 9 (GPRS) 00187 */ 00188 typedef enum { 00189 GSM_GPRS_EGPRS = 0, 00190 GSM_UMTS = 1, 00191 UMTS = 2, 00192 URAT_LTE = 3, 00193 GSM_UMTS_LTE = 4, 00194 GSM_LTE = 5, 00195 UMTS_LTE = 6, 00196 LTE_CATM1 = 7, 00197 LTE_CATNB1 = 8, 00198 GPRS_EGPRS = 9, 00199 NOT_USED = -1 00200 } RAT; 00201 00202 /** Module functionality modes. Ref to section 5.3.3 of UBX-13002752 for details. 00203 */ 00204 typedef enum { 00205 FUNC_MIN = 0, 00206 FUNC_FULL = 1, 00207 FUNC_AIRPLANE = 4, 00208 FUNC_EN_SIM_TLKT_DEDICATED = 6, 00209 FUNC_DS_SIM_TLKT = 7, 00210 FUNC_EN_SIM_TLKT_RAW = 9, 00211 FUNC_RESET = 15, 00212 FUNC_RESET_WITH_SIM = 16, 00213 FUNC_MIN_WITH_SIM = 19, 00214 FUNC_HALT = 127 00215 } FunctionalityMode; 00216 00217 #ifdef TARGET_UBLOX_C030_R41XM 00218 /** Supported MNO profiles for SARA-R4. 00219 */ 00220 typedef enum { 00221 SW_DEFAULT = 0, 00222 SIM_ICCID = 1, 00223 ATT = 2, 00224 VERIZON = 3, 00225 TELSTRA = 4, 00226 TMO = 5, 00227 CT = 6, 00228 VODAFONE = 19, 00229 TELUS = 21, 00230 DT = 31, 00231 STANDARD_EU = 100 00232 } MNOProfile; 00233 00234 #if MBED_CONF_UBLOX_CELL_DEFAULT_MNO_PROFILE 00235 #define DEFAULT_MNO_PROFILE (MNOProfile)MBED_CONF_UBLOX_CELL_DEFAULT_MNO_PROFILE 00236 #else 00237 #define DEFAULT_MNO_PROFILE SW_DEFAULT 00238 #endif 00239 00240 /** Reads the current MNO profile from modem and sets it to user specified profile. 00241 * User can also specify profile in mbed_lib.json file and call set_mno_profile without any arguments. 00242 * 00243 * Note: MNO profile should only be set in detached state and a reboot is required for settings to take effect 00244 * 00245 * @param profile MNO profile to use 00246 * @return true if operation was successful, false if there was an error 00247 */ 00248 bool set_mno_profile(MNOProfile profile = DEFAULT_MNO_PROFILE); 00249 00250 /** Get current MNO profile. 00251 * 00252 * @param profile pointer to variable that can hold the value for returned profile 00253 * @return true if operation was successful, false if there was an error 00254 */ 00255 bool get_mno_profile(int *profile); 00256 #endif 00257 00258 /** Set Radio Access Technology on modem. 00259 * 00260 * Note: RAT should only be set in detached state and a reboot is required for settings to take effect 00261 * 00262 * @param selected_rat Radio Access Technology to use 00263 * @param preferred_rat Radio Access Technology to use if selected_rat is not available 00264 * @param second_preferred_rat Radio Access Technology to use if selected_rat and preferred_rat are not available 00265 * 00266 * @return true if successful, otherwise false. 00267 */ 00268 bool set_modem_rat(RAT selected_rat, RAT preferred_rat = NOT_USED, RAT second_preferred_rat = NOT_USED); 00269 00270 /** Get last saved values for RAT using +URAT read command. Note: The current selected RAT is indicated by DeviceInfo.rat 00271 * 00272 * @param selected_rat pointer to variable that can hold the value for selected_rat 00273 * @param preferred_rat pointer to variable that can hold the value for preferred_rat 00274 * @param second_preferred_rat pointer to variable that can hold the value for second_preferred_rat 00275 * 00276 * Note: NOT_USED will be returned in the variables if dual or tri modes are not enabled. 00277 * 00278 * @return true if successful, otherwise false. 00279 */ 00280 bool get_modem_rat(int *selected_rat, int *preferred_rat, int *second_preferred_rat); 00281 00282 /** Sets the modem to specified functionality mode. 00283 * 00284 * @return true if successful, otherwise false. 00285 */ 00286 bool set_functionality_mode(FunctionalityMode mode); 00287 00288 /** Get the modem functionality mode 00289 * 00290 * @return true if successful, otherwise false. 00291 */ 00292 bool get_functionality_mode(int *mode); 00293 00294 /** reboot the modem using AT+CFUN=15. Application should call init() or connect() before making any other API calls. 00295 * 00296 * @return true if successful, otherwise false. 00297 */ 00298 bool reboot_modem(); 00299 00300 #ifdef TARGET_UBLOX_C030_R412M 00301 /** Important: Callback function is executed in context of AT parser so a user should not issue any AT commands from inside the callback. 00302 * It is recommended to set a flag/event/signal in callback and application can use that to wake up the modem and re-initialize it 00303 * 00304 * application callback for modem going in to PSM sleep 00305 * 00306 * @param func callback function to be executed when modem is going in to PSM sleep 00307 * @param param parameter to be passed to callback function. 00308 */ 00309 void attach_cb_psm_going_in(Callback<void(void*)> func, void *param) 00310 { 00311 _func_psm_going_in = func; 00312 _cb_param_psm_going_in = param; 00313 } 00314 00315 /** Important: Callback function is executed in context of AT parser so a user should not issue any AT commands from inside the callback. 00316 * It is recommended to set a flag/event/signal in callback and application can use that to wake up the modem and re-initialize it 00317 * 00318 * application callback for modem coming out of PSM sleep 00319 * 00320 * @param func callback function to be executed when modem is coming out of PSM sleep. 00321 * @param param parameter to be passed to callback function. 00322 */ 00323 void attach_cb_psm_coming_out(Callback<void(void*)> func, void *param) 00324 { 00325 _func_psm_coming_out = func; 00326 _cb_param_psm_coming_out = param; 00327 } 00328 00329 /** de-register the application callback for modem going in to PSM sleep 00330 * 00331 */ 00332 void detach_cb_psm_going_in() 00333 { 00334 _func_psm_going_in = NULL; 00335 _cb_param_psm_going_in = NULL; 00336 } 00337 00338 /** de-register application callback for modem coming out of PSM sleep 00339 * 00340 */ 00341 void detach_cb_psm_coming_out() 00342 { 00343 _func_psm_coming_out = NULL; 00344 _cb_param_psm_coming_out = NULL; 00345 } 00346 00347 /** Enable or disable the 3GPP PSM. 00348 * 00349 * Note: Application should reboot the module after enabling PSM in order to enter PSM state. (reboot_modem()) 00350 * Note: Modem can be woken up by toggling the power-on signal. (wakeup_modem()) 00351 * Note: When device enters PSM, all connections(PPP, sockets) and settings that are not saved in NV memory(ATE0, CREG etc) are lost. 00352 * host application should be prepared to re-initialize the modem and re-establish the connections. 00353 * Note: PSM is disabled if both periodic_time and active_time are 0. 00354 * Note: Not all variants/firmware versions support PSM URCs and in that case function will return false. 00355 * 00356 * PSM string encoding code is borrowed from AT_CellularPower.cpp 00357 * 00358 * @param periodic_time requested periodic TAU in seconds. 00359 * @param active_time requested active time in seconds. 00360 * @param func callback function to execute when modem goes to sleep 00361 * @param ptr parameter to callback function 00362 * @return True if successful, otherwise false. 00363 */ 00364 bool set_power_saving_mode(int periodic_tau, int active_time); 00365 00366 /** Reads the 3GPP PSM status (enabled or disabled) and returns assigned periodic tau and active time values. 00367 * 00368 * @param status 0: PSM disabled, 1: PSM enabled 00369 * @param periodic_tau assigned periodic TAU in seconds. 00370 * @param active_time assigned active time in seconds 00371 * @return True if command successful, otherwise false. 00372 */ 00373 bool get_power_saving_mode(int *status, int *periodic_tau, int *active_time); 00374 00375 /** Wake up the modem from PSM. Ref to comment on set_power_saving_mode, application should call init() or connect() 00376 * before making any other API calls. 00377 */ 00378 void wakeup_modem(); 00379 00380 /** True if the modem is not in PSM sleep 00381 * otherwise false. 00382 */ 00383 bool is_modem_awake(); 00384 #endif 00385 00386 protected: 00387 00388 #define OUTPUT_ENTER_KEY "\r" 00389 00390 #if MBED_CONF_UBLOX_CELL_GEN_DRV_AT_PARSER_BUFFER_SIZE 00391 #define AT_PARSER_BUFFER_SIZE MBED_CONF_UBLOX_CELL_GEN_DRV_AT_PARSER_BUFFER_SIZE 00392 #else 00393 #define AT_PARSER_BUFFER_SIZE 256 00394 #endif 00395 00396 #if MBED_CONF_UBLOX_CELL_GEN_DRV_AT_PARSER_TIMEOUT 00397 #define AT_PARSER_TIMEOUT MBED_CONF_UBLOX_CELL_GEN_DRV_AT_PARSER_TIMEOUT 00398 #else 00399 #define AT_PARSER_TIMEOUT 8*1000 // Milliseconds 00400 #endif 00401 00402 /** A string that would not normally be sent by the modem on the AT interface. 00403 */ 00404 #define UNNATURAL_STRING "\x01" 00405 00406 /** Supported u-blox modem variants. 00407 */ 00408 typedef enum { 00409 DEV_TYPE_NONE = 0, 00410 DEV_SARA_G35, 00411 DEV_LISA_U2, 00412 DEV_LISA_U2_03S, 00413 DEV_SARA_U2, 00414 DEV_SARA_R4, 00415 DEV_LEON_G2, 00416 DEV_TOBY_L2, 00417 DEV_MPCI_L2 00418 } DeviceType; 00419 00420 /** Network registration status. 00421 * UBX-13001820 - AT Commands Example Application Note (Section 4.1.4.5). 00422 */ 00423 typedef enum { 00424 GSM = 0, 00425 COMPACT_GSM = 1, 00426 UTRAN = 2, 00427 EDGE = 3, 00428 HSDPA = 4, 00429 HSUPA = 5, 00430 HSDPA_HSUPA = 6, 00431 LTE = 7, 00432 EC_GSM_IoT = 8, 00433 E_UTRAN_NB_S1 = 9 00434 } RadioAccessNetworkType; 00435 00436 /** Info about the modem. 00437 */ 00438 typedef struct { 00439 DeviceType dev; 00440 char iccid[20 + 1]; //!< Integrated Circuit Card ID. 00441 char imsi[15 + 1]; //!< International Mobile Station Identity. 00442 char imei[15 + 1]; //!< International Mobile Equipment Identity. 00443 char meid[18 + 1]; //!< Mobile Equipment IDentifier. 00444 volatile RadioAccessNetworkType rat; //!< Type of network (e.g. 2G, 3G, LTE). 00445 volatile NetworkRegistrationStatusCsd reg_status_csd; //!< Circuit switched attach status. 00446 volatile NetworkRegistrationStatusPsd reg_status_psd; //!< Packet switched attach status. 00447 volatile NetworkRegistrationStatusEps reg_status_eps; //!< Evolved Packet Switched (e.g. LTE) attach status. 00448 #ifdef TARGET_UBLOX_C030_R412M 00449 volatile ModemPSMState modem_psm_state; //!< last known modem PSM state 00450 #endif 00451 } DeviceInfo; 00452 00453 /* IMPORTANT: the variables below are available to 00454 * classes that inherit this in order to keep things 00455 * simple. However, ONLY this class should free 00456 * any of the pointers, or there will be havoc. 00457 */ 00458 00459 /** Point to the instance of the AT parser in use. 00460 */ 00461 ATCmdParser *_at; 00462 00463 /** The current AT parser timeout value. 00464 */ 00465 int _at_timeout; 00466 00467 /** File handle used by the AT parser. 00468 */ 00469 FileHandle *_fh; 00470 00471 /** The mutex resource. 00472 */ 00473 Mutex _mtx; 00474 00475 /** General info about the modem as a device. 00476 */ 00477 DeviceInfo _dev_info; 00478 00479 /** The SIM PIN to use. 00480 */ 00481 const char *_pin; 00482 00483 /** Set to true to spit out debug traces. 00484 */ 00485 bool _debug_trace_on; 00486 00487 /** The baud rate to the modem. 00488 */ 00489 int _baud; 00490 00491 /** True if the modem is ready register to the network, 00492 * otherwise false. 00493 */ 00494 bool _modem_initialised; 00495 00496 /** True it the SIM requires a PIN, otherwise false. 00497 */ 00498 bool _sim_pin_check_enabled; 00499 00500 /** Sets the modem up for powering on 00501 * 00502 * modem_init() is equivalent to plugging in the device, e.g., attaching power and serial port. 00503 * Uses onboard_modem_api.h where the implementation of onboard_modem_api is provided by the target. 00504 */ 00505 virtual void modem_init(); 00506 00507 /** Sets the modem in unplugged state 00508 * 00509 * modem_deinit() will be equivalent to pulling the plug off of the device, i.e., detaching power 00510 * and serial port. This puts the modem in lowest power state. 00511 * Uses onboard_modem_api.h where the implementation of onboard_modem_api is provided by the target. 00512 */ 00513 virtual void modem_deinit(); 00514 00515 /** Powers up the modem 00516 * 00517 * modem_power_up() is equivalent to pressing the soft power button. 00518 * The driver may repeat this if the modem is not responsive to AT commands. 00519 * Uses onboard_modem_api.h where the implementation of onboard_modem_api is provided by the target. 00520 */ 00521 virtual void modem_power_up(); 00522 00523 /** Powers down the modem 00524 * 00525 * modem_power_down() is equivalent to turning off the modem by button press. 00526 * Uses onboard_modem_api.h where the implementation of onboard_modem_api is provided by the target. 00527 */ 00528 virtual void modem_power_down(); 00529 00530 /* Note: constructor and destructor protected so that this 00531 * class can only ever be inherited, never used directly. 00532 */ 00533 UbloxCellularBase(); 00534 ~UbloxCellularBase(); 00535 00536 /** Initialise this class. 00537 * 00538 * @param tx the UART TX data pin to which the modem is attached. 00539 * @param rx the UART RX data pin to which the modem is attached. 00540 * @param baud the UART baud rate. 00541 * @param debug_on true to switch AT interface debug on, otherwise false. 00542 * 00543 * Note: it would be more natural to do this in the constructor 00544 * however, to avoid the diamond of death, this class is only 00545 * every inherited virtually. Classes that are inherited virtually 00546 * do not get passed parameters in their constructor and hence 00547 * classInit() must be called separately by the first one to wake 00548 * the beast. 00549 */ 00550 void baseClassInit(PinName tx = MDMTXD, 00551 PinName rx = MDMRXD, 00552 int baud = MBED_CONF_UBLOX_CELL_BAUD_RATE, 00553 bool debug_on = false); 00554 00555 /** Set the AT parser timeout. 00556 */ 00557 void at_set_timeout(int timeout); 00558 00559 /** Read up to size characters from buf 00560 * or until the character "end" is reached, overwriting 00561 * the newline with 0 and ensuring a terminator 00562 * in all cases. 00563 * 00564 * @param buf the buffer to write to. 00565 * @param size the size of the buffer. 00566 * @param end the character to stop at. 00567 * @return the number of characters read, 00568 * not including the terminator. 00569 */ 00570 int read_at_to_char(char * buf, int size, char end); 00571 00572 /** Powers up the modem. 00573 * 00574 * @return true if successful, otherwise false. 00575 */ 00576 bool power_up(); 00577 00578 /** Power down the modem. 00579 */ 00580 void power_down(); 00581 00582 /** Lock a mutex when accessing the modem. 00583 */ 00584 void lock(void) { _mtx.lock(); } 00585 00586 /** Helper to make sure that lock unlock pair is always balanced 00587 */ 00588 #define LOCK() { lock() 00589 00590 /** Unlock the modem when done accessing it. 00591 */ 00592 void unlock(void) { _mtx.unlock(); } 00593 00594 /** Helper to make sure that lock unlock pair is always balanced 00595 */ 00596 #define UNLOCK() } unlock() 00597 00598 /** Set the device identity in _dev_info 00599 * based on the ATI string returned by 00600 * the module. 00601 * 00602 * @return true if dev is a known value, 00603 * otherwise false. 00604 */ 00605 bool set_device_identity(DeviceType *dev); 00606 00607 /** Perform any modem initialisation that is 00608 * specialised by device type. 00609 * 00610 * @return true if successful, otherwise false. 00611 */ 00612 bool device_init(DeviceType dev); 00613 00614 /** Set up the SIM. 00615 * 00616 * @return true if successful, otherwiss false. 00617 */ 00618 bool initialise_sim_card(); 00619 00620 #ifdef TARGET_UBLOX_C030_R412M 00621 /** Converts the given uint to binary string. Fills the given str starting from [0] with the number of bits defined by bit_cnt 00622 * For example uint_to_binary_string(9, str, 10) would fill str "0000001001" 00623 * For example uint_to_binary_string(9, str, 3) would fill str "001" 00624 * 00625 * @param num uint to converts to binary string 00626 * @param str buffer for converted binary string 00627 * @param str_size size of the str buffer 00628 * @param bit_cnt defines how many bits are filled to buffer started from lsb 00629 */ 00630 void uint_to_binary_str(uint32_t num, char* str, int str_size, int bit_cnt); 00631 #endif 00632 00633 private: 00634 00635 void set_nwk_reg_status_csd(int status); 00636 void set_nwk_reg_status_psd(int status); 00637 void set_nwk_reg_status_eps(int status); 00638 void set_rat(int AcTStatus); 00639 bool get_iccid(); 00640 bool get_imsi(); 00641 bool get_imei(); 00642 bool get_meid(); 00643 bool set_sms(); 00644 void parser_abort_cb(); 00645 void CMX_ERROR_URC(); 00646 void CREG_URC(); 00647 void CGREG_URC(); 00648 void CEREG_URC(); 00649 void UMWI_URC(); 00650 #ifdef TARGET_UBLOX_C030_R412M 00651 void UUPSMR_URC(); 00652 bool _psm_status; 00653 void *_cb_param_psm_going_in; 00654 Callback<void(void*)> _func_psm_going_in; /**< Callback. */ 00655 void *_cb_param_psm_coming_out; 00656 Callback<void(void*)> _func_psm_coming_out; /**< Callback. */ 00657 void set_modem_psm_state(int state); 00658 #endif 00659 }; 00660 00661 #endif // _UBLOX_CELLULAR_BASE_ 00662
Generated on Wed Jul 13 2022 03:00:07 by
1.7.2