Nanostack eventloop tick timer can be used in case high resolution
platform timer is not needed. One usecase for that is Pelion
Cloud client when using for example cellular connectivity. This enables
PDMC application to enter deep sleep state.
Only release if the current _connect_status is CONNECTING. If the semaphore is released many times for each connect, then the next connect will not wait(), as it will be able to decrement the semaphore imediatelly.
Socket ID is usually spitted out by the modem, however there are cases
when the modem is actully taken in as an input argument, e.g., in the
case of QUECTEL M26 modem. This minor knit clarifies that the
CellularSocket::id can be an input argument.
UBLOX_EVK_ODIN_W2 advertises more events than we expect.
1) When disconnecting first network connectivity is lost and then an
actual disconnection event arrives. The first one is unexpected.
2) When reconnecting MESH_BOOTSTRAP_START_FAILED shows up, but the board
eventually manages to connect
CellularDevice::get_default_instance() is a weak method and is overriden
by either a default construction provided in the code or by application
at some stage. This method needs to be flagged otherwise using another
driver will be hindered by the default overriding of this driver.
Using malloc will require us to add stdlib.h somewhere in the path for
the application. Maybe the CI apps are adding stdlib.h and that's why
the code would have worked. In a custom app, it can happen that the
header is not included. Using new avoids the need to add stdlib.h
anywhere and it is more in line with C++.
For default construction of the driver, it would be necessary to define
the pins. However as we don't know the correct pins, until/unless user
sets them up for us. So it makes sense to mark the pins as NC. It would
be easier to debug if the pins are set to NC if user forgot to set them
up.
To make this driver more useful, we needed to do some changes. The
wirings for the modem can differ on the board so we also need to be
flexible in our approach.
It is now mandatory to provide the power pin and pin polarity in the
constructor alongwith the file handle. Reset pin is optional.
Standard 3GPP TS27.007 states that the AT+CGSN command can optionally
have type parameter that determines the output. However Quiectel EC2X
series doesn't accept parameters. We need to reflect that in the
cellular properties setup.