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.
Dependents: example-ublox-cellular-interface example-ublox-cellular-interface_r410M example-ublox-mbed-client example-ublox-cellular-interface ... more
UbloxATCellularInterface.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_AT_CELLULAR_INTERFACE_ 00017 #define _UBLOX_AT_CELLULAR_INTERFACE_ 00018 00019 #include "UbloxCellularBase.h" 00020 #include "CellularInterface.h" 00021 #include "NetworkStack.h" 00022 00023 /** UbloxATCellularInterface class. 00024 * 00025 * This uses the cellular-tuned IP stack that 00026 * is on-board the cellular modem instead of the 00027 * LWIP stack on the mbed MCU. 00028 * 00029 * There are three advantages to using this mechanism: 00030 * 00031 * 1. Since the modem interface remains in AT mode 00032 * throughout, it is possible to continue using 00033 * any AT commands (e.g. send SMS, use the module's 00034 * file system, etc.) while the connection is up. 00035 * 00036 * 2. The UbloxATCellularInterfaceExt class can 00037 * be used to perform very simple HTTP and FTP 00038 * operations using the modem's on-board clients. 00039 * 00040 * 3. LWIP is not required (and hence RAM is saved). 00041 * 00042 * The disadvantage is that some additional parsing 00043 * (at the AT interface) has to go on in order to exchange 00044 * IP packets, so this is less efficient under heavy loads. 00045 * Also TCP Server and getting/setting of socket options is 00046 * currently not supported. 00047 */ 00048 00049 // Forward declaration 00050 class NetworkStack; 00051 00052 /* 00053 * NOTE: order is important in the inheritance below! PAL takes this class 00054 * and casts it to CellularInterface and so CellularInterface has to be first 00055 * in the last for that to work. 00056 */ 00057 00058 /** UbloxATCellularInterface class. 00059 * 00060 * This class implements the network stack interface into the cellular 00061 * modems on the C030 and C027 boards for 2G/3G/4G modules using 00062 * the IP stack running on the cellular module. 00063 */ 00064 class UbloxATCellularInterface : public CellularInterface, public NetworkStack, virtual public UbloxCellularBase { 00065 00066 public: 00067 /** Constructor. 00068 * 00069 * @param tx the UART TX data pin to which the modem is attached. 00070 * @param rx the UART RX data pin to which the modem is attached. 00071 * @param baud the UART baud rate. 00072 * @param debug_on true to switch AT interface debug on, otherwise false. 00073 */ 00074 UbloxATCellularInterface(PinName tx = MDMTXD, 00075 PinName rx = MDMRXD, 00076 int baud = MBED_CONF_UBLOX_CELL_BAUD_RATE, 00077 bool debug_on = false, 00078 osPriority priority = osPriorityNormal); 00079 00080 /* Destructor. 00081 */ 00082 virtual ~UbloxATCellularInterface(); 00083 00084 /** The amount of extra space needed in terms of AT interface 00085 * characters to get a chunk of user data (i.e. one UDP packet 00086 * or a portion of a TCP packet) across the AT interface. 00087 */ 00088 #define AT_PACKET_OVERHEAD 77 00089 00090 /** The profile to use (on board the modem). 00091 */ 00092 #define PROFILE "0" 00093 00094 /** Translates a host name to an IP address with specific IP version. 00095 * 00096 * The host name may be either a domain name or an IP address. If the 00097 * host name is an IP address, no network transactions will be performed. 00098 * 00099 * If no stack-specific DNS resolution is provided, the host name 00100 * will be resolved using a UDP socket on the stack. 00101 * 00102 * @param host Host name to resolve. 00103 * @param address Destination for the host SocketAddress. 00104 * @param version IP version of address to resolve, NSAPI_UNSPEC indicates 00105 * version is chosen by the stack (defaults to NSAPI_UNSPEC). 00106 * @return 0 on success, negative error code on failure. 00107 */ 00108 virtual nsapi_error_t gethostbyname(const char *host, 00109 SocketAddress *address, 00110 nsapi_version_t version = NSAPI_UNSPEC); 00111 00112 /** Set the authentication scheme. 00113 * 00114 * @param auth The authentication scheme, chose from 00115 * NSAPI_SECURITY_NONE, NSAPI_SECURITY_PAP, 00116 * NSAPI_SECURITY_CHAP or NSAPI_SECURITY_UNKNOWN; 00117 * use NSAPI_SECURITY_UNKNOWN to try all of none, 00118 * PAP and CHAP. 00119 */ 00120 virtual void set_authentication(nsapi_security_t auth); 00121 00122 /** Set the cellular network credentials. 00123 * 00124 * Please check documentation of connect() for default behaviour of APN settings. 00125 * 00126 * @param apn Access point name. 00127 * @param uname Optionally, user name. 00128 * @param pwd Optionally, password. 00129 */ 00130 virtual void set_credentials(const char *apn, const char *uname = 0, 00131 const char *pwd = 0); 00132 00133 /** Set the PIN code for the SIM card. 00134 * 00135 * @param sim_pin PIN for the SIM card. 00136 */ 00137 virtual void set_sim_pin(const char *sim_pin); 00138 00139 /** Connect to the cellular network and start the interface. 00140 * 00141 * Attempts to connect to a cellular network. Note: if init() has 00142 * not been called beforehand, connect() will call it first. 00143 * 00144 * @param sim_pin PIN for the SIM card. 00145 * @param apn Optionally, access point name. 00146 * @param uname Optionally, user name. 00147 * @param pwd Optionally, password. 00148 * @return NSAPI_ERROR_OK on success, or negative error code on failure. 00149 */ 00150 virtual nsapi_error_t connect(const char *sim_pin, const char *apn = 0, 00151 const char *uname = 0, const char *pwd = 0); 00152 00153 /** Attempt to connect to the cellular network. 00154 * 00155 * Brings up the network interface. Connects to the cellular radio 00156 * network and then brings up IP stack on the cellular modem to be used 00157 * indirectly via AT commands, rather than LWIP. Note: if init() has 00158 * not been called beforehand, connect() will call it first. 00159 * NOTE: even a failed attempt to connect will cause the modem to remain 00160 * powered up. To power it down, call deinit(). 00161 * 00162 * For APN setup, default behaviour is to use 'internet' as APN string 00163 * and assuming no authentication is required, i.e., user name and password 00164 * are not set. Optionally, a database lookup can be requested by turning 00165 * on the APN database lookup feature. The APN database is by no means 00166 * exhaustive (feel free to submit a pull request with additional values). 00167 * It contains a short list of some public APNs with publicly available 00168 * user names and passwords (if required) in some particular countries only. 00169 * Lookup is done using IMSI (International mobile subscriber identifier). 00170 * 00171 * The preferred method is to setup APN using 'set_credentials()' API. 00172 * 00173 * If you find that the AT interface returns "CONNECT" but shortly afterwards 00174 * drops the connection then 99% of the time this will be because the APN 00175 * is incorrect. 00176 * 00177 * @return 0 on success, negative error code on failure. 00178 */ 00179 virtual nsapi_error_t connect(); 00180 00181 /** Attempt to disconnect from the network. 00182 * 00183 * Brings down the network interface. 00184 * Does not bring down the Radio network. 00185 * 00186 * @return 0 on success, negative error code on failure. 00187 */ 00188 virtual nsapi_error_t disconnect(); 00189 00190 /** Adds or removes a SIM facility lock. 00191 * 00192 * Can be used to enable or disable SIM PIN check at device startup. 00193 * 00194 * @param set Can be set to true if the SIM PIN check is supposed 00195 * to be enabled and vice versa. 00196 * @param immediate If true, change the SIM PIN now, else set a flag 00197 * and make the change only when connect() is called. 00198 * If this is true and init() has not been called previously, 00199 * it will be called first. 00200 * @param sim_pin The current SIM PIN, must be a const. If this is not 00201 * provided, the SIM PIN must have previously been set by a 00202 * call to set_sim_pin(). 00203 * @return 0 on success, negative error code on failure. 00204 */ 00205 nsapi_error_t set_sim_pin_check(bool set, bool immediate = false, 00206 const char *sim_pin = NULL); 00207 00208 /** Change the PIN for the SIM card. 00209 * 00210 * Provide the new PIN for your SIM card with this API. It is ONLY possible to 00211 * change the SIM PIN when SIM PIN checking is ENABLED. 00212 * 00213 * @param new_pin New PIN to be used in string format, must be a const. 00214 * @param immediate If true, change the SIM PIN now, else set a flag 00215 * and make the change only when connect() is called. 00216 * If this is true and init() has not been called previously, 00217 * it will be called first. 00218 * @param old_pin Old PIN, must be a const. If this is not provided, the SIM PIN 00219 * must have previously been set by a call to set_sim_pin(). 00220 * @return 0 on success, negative error code on failure. 00221 */ 00222 nsapi_error_t set_new_sim_pin(const char *new_pin, bool immediate = false, 00223 const char *old_pin = NULL); 00224 00225 /** Check if the connection is currently established or not. 00226 * 00227 * @return True if connected to a data network, otherwise false. 00228 */ 00229 virtual bool is_connected(); 00230 00231 /** Get the local IP address 00232 * 00233 * @return Null-terminated representation of the local IP address 00234 * or null if no IP address has been received. 00235 */ 00236 MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") 00237 virtual const char *get_ip_address (); 00238 00239 /** @copydoc NetworkInterface::get_ip_address */ 00240 virtual nsapi_error_t get_ip_address (SocketAddress *address); 00241 00242 /** Get the local network mask. 00243 * 00244 * @return Null-terminated representation of the local network mask 00245 * or null if no network mask has been received. 00246 */ 00247 MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") 00248 virtual const char *get_netmask (); 00249 00250 /** @copydoc NetworkInterface::get_netmask */ 00251 virtual nsapi_error_t get_netmask (SocketAddress *address); 00252 00253 /** Get the local gateways. 00254 * 00255 * @return Null-terminated representation of the local gateway 00256 * or null if no network mask has been received. 00257 */ 00258 MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") 00259 virtual const char *get_gateway (); 00260 00261 /** @copydoc NetworkInterface::get_gateway */ 00262 virtual nsapi_error_t get_gateway (SocketAddress *address); 00263 00264 /** Call back in case connection is lost. 00265 * 00266 * @param cb The function to call. 00267 */ 00268 void connection_status_cb(Callback<void(nsapi_error_t)> cb); 00269 00270 /** Set the plmn. PLMN controls to what network device registers. 00271 * 00272 * @param plmn user to force what network to register. 00273 */ 00274 virtual void set_plmn(const char *plmn); 00275 00276 protected: 00277 00278 /** Socket "unused" value. 00279 */ 00280 #define SOCKET_UNUSED -1 00281 00282 /** Socket timeout value in milliseconds. 00283 * Note: the sockets layer above will retry the 00284 * call to the functions here when they return NSAPI_ERROR_WOULD_BLOCK 00285 * and the user has set a larger timeout or full blocking. 00286 */ 00287 #define SOCKET_TIMEOUT 1000 00288 00289 /** The maximum number of bytes in a packet that can be written 00290 * to the AT interface in one go. 00291 */ 00292 #define MAX_WRITE_SIZE 1024 00293 00294 /** The maximum number of bytes in a packet that can be read from 00295 * from the AT interface in one go. 00296 */ 00297 #define MAX_READ_SIZE 1024 00298 00299 /** Management structure for sockets. 00300 */ 00301 typedef struct { 00302 int modem_handle; //!< The modem's handle for the socket. 00303 volatile nsapi_size_t pending; //!< The number of received bytes pending. 00304 void (*callback)(void *); //!< A callback for events. 00305 void *data; //!< A data pointer that must be passed to the callback. 00306 } SockCtrl; 00307 00308 /** Sockets storage. 00309 */ 00310 SockCtrl _sockets[7]; 00311 00312 /** Storage for a single IP address. 00313 */ 00314 char *_ip; 00315 00316 /** The APN to use. 00317 */ 00318 const char *_apn; 00319 00320 /** The user name to use. 00321 */ 00322 const char *_uname; 00323 00324 /** The password to use. 00325 */ 00326 const char *_pwd; 00327 00328 /** The type of authentication to use. 00329 */ 00330 nsapi_security_t _auth; 00331 00332 /** Get the next set of credentials from the database. 00333 */ 00334 virtual void get_next_credentials(const char ** config); 00335 00336 /** Activate one of the on-board modem's connection profiles. 00337 * 00338 * @param apn The APN to use. 00339 * @param username The user name to use. 00340 * @param password The password to use. 00341 * @param auth The authentication method to use 00342 * (NSAPI_SECURITY_NONE, NSAPI_SECURITY_PAP, 00343 * NSAPI_SECURITY_CHAP or NSAPI_SECURITY_UNKNOWN). 00344 * @return True if successful, otherwise false. 00345 */ 00346 virtual bool activate_profile(const char* apn, const char* username, 00347 const char* password, nsapi_security_t auth); 00348 00349 /** Activate a profile using the existing external connection. 00350 * 00351 * @return true if successful, otherwise false. 00352 */ 00353 virtual bool activate_profile_reuse_external(void); 00354 00355 /** Activate a profile based on connection ID. 00356 * 00357 * @param cid The connection ID. 00358 * @param apn The APN to use. 00359 * @param username The user name to use. 00360 * @param password The password to use. 00361 * @param auth The authentication method to use. 00362 * @return True if successful, otherwise false. 00363 */ 00364 virtual bool activate_profile_by_cid(int cid, const char* apn, const char* username, 00365 const char* password, nsapi_security_t auth); 00366 00367 /** Connect the on board IP stack of the modem. 00368 * 00369 * @return True if successful, otherwise false. 00370 */ 00371 virtual bool connect_modem_stack(); 00372 00373 /** Disconnect the on board IP stack of the modem. 00374 * 00375 * @return True if successful, otherwise false. 00376 */ 00377 virtual bool disconnect_modem_stack(); 00378 00379 /** Provide access to the NetworkStack object 00380 * 00381 * @return The underlying NetworkStack object. 00382 */ 00383 virtual NetworkStack *get_stack(); 00384 00385 protected: 00386 00387 /** Open a socket. 00388 * 00389 * Creates a network socket and stores it in the specified handle. 00390 * The handle must be passed to following calls on the socket. 00391 * 00392 * @param handle Destination for the handle to a newly created socket. 00393 * @param proto Protocol of socket to open, NSAPI_TCP or NSAPI_UDP. 00394 * @return 0 on success, negative error code on failure. 00395 */ 00396 virtual nsapi_error_t socket_open(nsapi_socket_t *handle, 00397 nsapi_protocol_t proto); 00398 00399 /** Close a socket. 00400 * 00401 * Closes any open connection and deallocates any memory associated 00402 * with the socket. 00403 * 00404 * @param handle Socket handle. 00405 * @return 0 on success, negative error code on failure. 00406 */ 00407 virtual nsapi_error_t socket_close(nsapi_socket_t handle); 00408 00409 /** Bind a specific port to a socket. 00410 * 00411 * Binding a socket specifies port on which to receive 00412 * data. The IP address is ignored. Note that binding 00413 * a socket involves closing it and reopening and so the 00414 * bind operation should be carried out before any others. 00415 * 00416 * @param handle Socket handle. 00417 * @param address Local address to bind (of which only the port is used). 00418 * @return 0 on success, negative error code on failure. 00419 */ 00420 virtual nsapi_error_t socket_bind(nsapi_socket_t handle, 00421 const SocketAddress &address); 00422 00423 /** Connects TCP socket to a remote host. 00424 * 00425 * Initiates a connection to a remote server specified by the 00426 * indicated address. 00427 * 00428 * @param handle Socket handle. 00429 * @param address The SocketAddress of the remote host. 00430 * @return 0 on success, negative error code on failure. 00431 */ 00432 virtual nsapi_error_t socket_connect(nsapi_socket_t handle, 00433 const SocketAddress &address); 00434 00435 /** Send data over a TCP socket. 00436 * 00437 * The socket must be connected to a remote host. Returns the number of 00438 * bytes sent from the buffer. This class sets no upper buffer limit on 00439 * buffer size and the maximum packet size is not connected with the 00440 * platform.buffered-serial-txbuf-size/platform.buffered-serial-rxbuf-size 00441 * definitions. 00442 * 00443 * @param handle Socket handle. 00444 * @param data Buffer of data to send to the host. 00445 * @param size Size of the buffer in bytes. 00446 * @return Number of sent bytes on success, negative error 00447 * code on failure. 00448 */ 00449 virtual nsapi_size_or_error_t socket_send(nsapi_socket_t handle, 00450 const void *data, nsapi_size_t size); 00451 00452 /** Send a packet over a UDP socket. 00453 * 00454 * Sends data to the specified address. Returns the number of bytes 00455 * sent from the buffer. 00456 * 00457 * PACKET SIZES: the maximum packet size that can be sent in a single 00458 * UDP packet is limited by the configuration value 00459 * platform.buffered-serial-txbuf-size (defaults to 256). 00460 * The maximum UDP packet size is: 00461 * 00462 * platform.buffered-serial-txbuf-size - AT_PACKET_OVERHEAD 00463 * 00464 * ...with a limit of 1024 bytes (at the AT interface). So, to allow sending 00465 * of a 1024 byte UDP packet, edit your mbed_app.json to add a target override 00466 * setting platform.buffered-serial-txbuf-size to 1101. However, for 00467 * UDP packets, 508 bytes is considered a more realistic size, taking into 00468 * account fragmentation sizes over the public internet, which leads to a 00469 * platform.buffered-serial-txbuf-size/platform.buffered-serial-rxbuf-size 00470 * setting of 585. 00471 * 00472 * If size is larger than this limit, the data will be split across separate 00473 * UDP packets. 00474 * 00475 * @param handle Socket handle. 00476 * @param address The SocketAddress of the remote host. 00477 * @param data Buffer of data to send to the host. 00478 * @param size Size of the buffer in bytes. 00479 * @return Number of sent bytes on success, negative error 00480 * code on failure. 00481 */ 00482 virtual nsapi_size_or_error_t socket_sendto(nsapi_socket_t handle, 00483 const SocketAddress &address, 00484 const void *data, 00485 nsapi_size_t size); 00486 00487 /** Receive data over a TCP socket. 00488 * 00489 * The socket must be connected to a remote host. Returns the number of 00490 * bytes received into the buffer. This class sets no upper limit on the 00491 * buffer size and the maximum packet size is not connected with the 00492 * platform.buffered-serial-txbuf-size/platform.buffered-serial-rxbuf-size 00493 * definitions. 00494 * 00495 * @param handle Socket handle. 00496 * @param data Destination buffer for data received from the host. 00497 * @param size Size of the buffer in bytes. 00498 * @return Number of received bytes on success, negative error 00499 * code on failure. 00500 */ 00501 virtual nsapi_size_or_error_t socket_recv(nsapi_socket_t handle, 00502 void *data, nsapi_size_t size); 00503 00504 /** Receive a packet over a UDP socket. 00505 * 00506 * Receives data and stores the source address in address if address 00507 * is not NULL. Returns the number of bytes received into the buffer. 00508 * 00509 * PACKET SIZES: the maximum packet size that can be retrieved in a 00510 * single call to this method is limited by the configuration value 00511 * platform.buffered-serial-rxbuf-size (default 256). The maximum 00512 * UDP packet size is: 00513 * 00514 * platform.buffered-serial-rxbuf-size - AT_PACKET_OVERHEAD 00515 * 00516 * ...with a limit of 1024 (at the AT interface). So to allow reception of a 00517 * 1024 byte UDP packet in a single call, edit your mbed_app.json to add a 00518 * target override setting platform.buffered-serial-rxbuf-size to 1101. 00519 * 00520 * If the received packet is larger than this limit, any remainder will 00521 * be returned in subsequent calls to this method. Once a single UDP 00522 * packet has been received, this method will return. 00523 * 00524 * @param handle Socket handle. 00525 * @param address Destination for the source address or NULL. 00526 * @param data Destination buffer for data received from the host. 00527 * @param size Size of the buffer in bytes. 00528 * @return Number of received bytes on success, negative error 00529 * code on failure. 00530 */ 00531 virtual nsapi_size_or_error_t socket_recvfrom(nsapi_socket_t handle, 00532 SocketAddress *address, 00533 void *data, nsapi_size_t size); 00534 00535 /** Register a callback on state change of the socket. 00536 * 00537 * The specified callback will be called on state changes such as when 00538 * the socket can recv/send/accept successfully and on when an error 00539 * occurs. The callback may also be called spuriously without reason. 00540 * 00541 * The callback may be called in an interrupt context and should not 00542 * perform expensive operations such as recv/send calls. 00543 * 00544 * @param handle Socket handle. 00545 * @param callback Function to call on state change. 00546 * @param data Argument to pass to callback. 00547 */ 00548 virtual void socket_attach(nsapi_socket_t handle, void (*callback)(void *), 00549 void *data); 00550 00551 /** Listen for connections on a TCP socket. 00552 * 00553 * Marks the socket as a passive socket that can be used to accept 00554 * incoming connections. 00555 * 00556 * @param handle Socket handle. 00557 * @param backlog Number of pending connections that can be queued 00558 * simultaneously, defaults to 1. 00559 * @return 0 on success, negative error code on failure. 00560 */ 00561 virtual nsapi_error_t socket_listen(nsapi_socket_t handle, int backlog); 00562 00563 /** Accepts a connection on a TCP socket. 00564 * 00565 * The server socket must be bound and set to listen for connections. 00566 * On a new connection, creates a network socket and stores it in the 00567 * specified handle. The handle must be passed to following calls on 00568 * the socket. 00569 * 00570 * A stack may have a finite number of sockets, in this case 00571 * NSAPI_ERROR_NO_SOCKET is returned if no socket is available. 00572 * 00573 * This call is non-blocking. If accept would block, 00574 * NSAPI_ERROR_WOULD_BLOCK is returned immediately. 00575 * 00576 * @param server Socket handle to server to accept from. 00577 * @param handle Destination for a handle to the newly created socket. 00578 * @param address Destination for the remote address or NULL. 00579 * @return 0 on success, negative error code on failure. 00580 */ 00581 virtual nsapi_error_t socket_accept(nsapi_socket_t server, 00582 nsapi_socket_t *handle, 00583 SocketAddress *address = 0); 00584 00585 /** Set stack-specific socket options. 00586 * 00587 * The setsockopt allow an application to pass stack-specific hints 00588 * to the underlying stack. For unsupported options, 00589 * NSAPI_ERROR_UNSUPPORTED is returned and the socket is unmodified. 00590 * 00591 * @param handle Socket handle. 00592 * @param level Stack-specific protocol level. 00593 * @param optname Stack-specific option identifier. 00594 * @param optval Option value. 00595 * @param optlen Length of the option value. 00596 * @return 0 on success, negative error code on failure. 00597 */ 00598 virtual nsapi_error_t setsockopt(nsapi_socket_t handle, int level, 00599 int optname, const void *optval, 00600 unsigned optlen); 00601 00602 /** Get stack-specific socket options. 00603 * 00604 * The getstackopt allow an application to retrieve stack-specific hints 00605 * from the underlying stack. For unsupported options, 00606 * NSAPI_ERROR_UNSUPPORTED is returned and optval is unmodified. 00607 * 00608 * @param handle Socket handle. 00609 * @param level Stack-specific protocol level. 00610 * @param optname Stack-specific option identifier. 00611 * @param optval Destination for option value. 00612 * @param optlen Length of the option value. 00613 * @return 0 on success, negative error code on failure. 00614 */ 00615 virtual nsapi_error_t getsockopt(nsapi_socket_t handle, int level, 00616 int optname, void *optval, 00617 unsigned *optlen); 00618 00619 private: 00620 00621 // u_ added to namespace us somewhat as this darned macro 00622 // is defined by everyone and their dog 00623 #define u_stringify(a) str(a) 00624 #define str(a) #a 00625 00626 bool _sim_pin_check_change_pending; 00627 bool _sim_pin_check_change_pending_enabled_value; 00628 bool _sim_pin_change_pending; 00629 const char *_sim_pin_change_pending_new_pin_value; 00630 Thread event_thread; 00631 volatile bool _run_event_thread; 00632 void handle_event(); 00633 SockCtrl * find_socket(int modem_handle = SOCKET_UNUSED); 00634 void clear_socket(SockCtrl * socket); 00635 bool check_socket(SockCtrl * socket); 00636 int nsapi_security_to_modem_security(nsapi_security_t nsapi_security); 00637 Callback<void(nsapi_error_t)> _connection_status_cb; 00638 void UUSORD_URC(); 00639 void UUSORF_URC(); 00640 void UUSOCL_URC(); 00641 void UUPSDD_URC(); 00642 #ifdef TARGET_UBLOX_C030_R41XM 00643 bool activate_context(); 00644 bool define_context(); 00645 bool is_context_active(); 00646 #endif 00647 }; 00648 00649 #endif // _UBLOX_AT_CELLULAR_INTERFACE_ 00650
Generated on Thu Jul 21 2022 04:10:53 by
1.7.2