summaryrefslogtreecommitdiff
path: root/src/MTS_IO_QuectelRadio.cpp
AgeCommit message (Collapse)AuthorFiles
2023-03-30Commit merge with master on libmts-io mirrorjeff1
2023-03-27Support Portal Case #5086148: use Cellular Radio time as alternative to GPS ↵sdesai1
or NTP
2023-03-23Support Portal Case #5086148: use Cellular Radio time as alternative to GPS ↵sdesai1
or NTP
2023-03-20Support Portal Case #5086148: use Cellular Radio timeas alternative to GPS ↵sdesai1
or NTP
2023-03-20Support Portal Case #5086148: use Cellular Radio timeas alternative to GPS ↵sdesai1
or NTP
2023-03-15GP-139:Support Portal Case #5086148: use Cellular Radio timeas alternative ↵sdesai1
to GPS or NTP
2023-02-27[GP-1597] mPower R.6.3.X: Cellular Provider Profiles - LTE AuthenticationYevhen Mykhno1
2023-02-01[MTX-4769] mPower R.6.3.X: L6G1 Support - Cellular DiagnosticsMykola Salomatin1
Add additional command about all carrier profiles that are supported.
2023-01-31[GP-1733] mPower R.6.3.X: L6G1 Support - libmts-io, radio-cmd, radio-queryYevhen Mykhno1
- function getRegistrationCommands() implemented as pure virtual and overrided for every base radio model - minor indentation fixes - function getSimStatusSummary(Json::Value& jData) changed to process radio modems that do not have separate commands for the SIM presence check - function getManufacturer(std::string& sManufacturer) changed: AT command changet to 'AT+CGMI' - src/MTS_IO_QuectelRadio.cpp -- comments correction
2022-12-19[GP-1195] Cellular debugging - add a querySerhii Kostiuk1
Define the set of debugging AT commands and a function to execute such commands. The function executes the commands one-by-one end returns raw command outputs. To be used by radio-query --diagnostics.
2022-05-04[MTX-4445] mPower R.6.0.X: MTCAP3: LNA7D - cellular radio support GP-1548Mykola Salomatin1
setRxDiversity command moved to common class for Quectel radios - QuectelRadio.cpp. Add LNA7D radio support. LNA7D radio supports only 3g and 4g network modes. Add new command for enabling/disabling diversity. Retained backward compatibility with the old diversity command.
2022-04-21[MTX-4445] mPower R.6.0.X: MTCAP3: LNA7D - cellular radio support GP-1548Mykola Salomatin1
Fix LNA7D delta radio firmware upgrade issue (handling double radio reset).
2022-04-18Update MODBUS slave feature, Rogers Certification issueandrii.davydenko1
2021-09-29[MTX-4206] mPower R.6.0: Making Telit and Quectel radios data-only on AT&T ↵Mykola Salomatin1
network. GP-1364 Add 2 functions for Telit and Quectel modems: - disableVoiceSupport: disable voice support (IMS and CSFB) and enable SMS only registration flag. - getVoiceSupport: get voice support configuration for the current radio.
2021-04-16[MTX-3998] mPower R. Apr 2021: +CEMODE shall be set to CEMODE=2 - Quectel - ↵mykola.salomatin1
GP-1111 Refactoring after review
2021-04-15[MTX-3998] mPower R. Apr 2021: +CEMODE shall be set to CEMODE=2 - Quectel - ↵mykola.salomatin1
GP-1111 Refactoring common functions, telit and quectel functions related to CEMODE switching
2021-04-15[MTX-3998] mPower R. Apr 2021: +CEMODE shall be set to CEMODE=2 - Quectel - ↵mykola.salomatin1
GP-1111 Added CEMODE switching support for Quectel radios
2020-08-07Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Small improvements in code comments.
2020-08-07Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Switched from `sendCommand` with empty command argument to `waitResponse` for URC analysis. Sending empty string to the serial interface is undefined behaviour according to the POSIX standart. More of it, we don't need to execute `write` on file descriptor to wait for URC messages. It was more like a hack than something that was actually required. This commit removes the hack and replaces it with a proper waiting for a response.
2020-08-07Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
This commit fixes additional issue discrovered after implementation of ACK mode. When a single 1024 bytes long chunk of data is sent to the radio - the radio reports that it received nothing. Which is a lie according to Wireshark USB logs, data is actually sent over USB and looks like radio acknowledged it in USB packet. This issue is reproducible when chunk size is set to 1024 or 512 bytes. This issue is not reproducible with chunk size of 256 bytes. When 1025 or 2048 bytes are sent to the radio - all bytes are received just fine and we get an ACK string for each 1024 bytes of data. This commit allows to send 2048 bytes long chunks of data, wait for two ACK strings from the radio and finish transmission successfully.
2020-08-07Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
During testing I discrovered that EG25-G radio may lose some data during transmission over Serial AT interface or just freezes and stops responding over Serial AT interface. When ACK mode is not used, the radio may either return an error: ``` Expected: [+QFUPL: 24312545,fa6b], Actual: [+QFUPL: 17124608,b907 +CME ERROR: 409 // Fail to write the file ] ``` Or it may just freeze on modem_at1 interface and stop responding to AT commands: ``` 8:0:34:32|TRACE|RADIO| Sending command [AT] 8:0:34:133|DEBUG|RESULT: 8:0:34:133|DEBUG|Shutting Down ``` This commit implements an alternative, ACK mode for data transmission to prevent data losses. Data is sent in chunks and the device waits for ACK string from the radio for each chunk.
2020-08-05Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Increase the timeout for +QFUPL response to 10 seconds. 5 seconds is the default timeout for the radio to wait for new data on its serial interface. +QFUPL response timeout was increased to 10 seconds to debug cases when hardware flow control fails for some reason and the radio does not receive all the data sent to it from the device.
2020-08-04Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
CellularRadio::resetConnection implementations disables serial echo on connection reset. Serial echo is disabled using ATE0 command, radio may handle it and return an OK response. During testing I discovered that EG25 radio does not return an OK response in 100ms (default timeout time) and this OK response may conflict with successive AT commands. This commit adds a simple "AT" command to be executed before getVendorFirmware to "eat" all the data accumulated in the buffer.
2020-08-04Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
During testing with L4G1 device I discovered some inconsistencies in behaviour between EG25-G device and EG95 devices (EG95-NA and EG95-E). EG25-G device that I have on hands does not allow to perform downgrades using delta images. When there is an attempt to apply a downgrade delta image it behaves as the following: - radio prints `OK` - radio prints `+QIND: "FOTA",502` - radio is not rebooted While EG95 radios always reboot at least once to apply the firmware image. Even if it is not valid. Also I noticed that detach from the serial bus may take more than 10 seconds in some rare cases. Thus we need to wait not a fixed amount of time but until the radio actually detaches from the bus. This commit attempts to address the findings described above.
2020-08-04Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Delta Radio Firmware Upgrade implementation uses file management commands for Quectel radios. Radio behaviour for +QFLST output on EG25 radios is different that on EG95: - EG95 radios list all files on UFS _with_ "UFS:" prefix; - EG25 radios list all files on UFS _without_ "UFS:" prefix. This commit allows to handle both formats of +QFLST output to check file presense.
2020-07-23Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
During testing it was discovered that rarely CellularRadio::sendCommand implementation returns not one line with URC output but multiple lines. It happened once during testing and development. But is likely to happen again under increased CPU load and/or when CPU does not keep pace with the serial data flow.
2020-07-23Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Added more strict handling for comma-separated data in URC messages to prevent out-of-bounds reads.
2020-07-21Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Fixed Quectel checksum calculation algorithm to correctly handle odd file sizes.
2020-07-17Code reviewAndrii Pientsov1
2020-07-16Add vendor firmware versionAndrii Pientsov1
2020-07-15MTX-3404 Code ReviewAndrii Pientsov1
2020-07-13MTX-3404 Code ReviewAndrii Pientsov1
2020-07-10Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Small fixes and improvements. 1. Fixed casing for the "FUMO Error: timeout, radio is not responding" message. All error messages passed to the status callback shall start with "FUMO Error:" 2. Removed extra carriage return for the "abortFileUpload" command. Passing "+++\r" instead of the "+++" to the radio works for Quectel but cause issues for Telit. At the same time Quectel specificly requires to "Do not input any character within 1s after “+++” has been inputted." in their FILE manual. Possibly, "any character" includes carriage return. 3. Fixed a typo: "lenght" -> "length"
2020-07-06Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Fixed message format for FUMO Done and FUMO Error messages. The original code with "FUMO done" ("done" lowercase) and "FUMO error" ("error" lowercase) was copied from the ME910C1-WW implementation. At the same time other places of the code use Title Case for "Done", "Error" and "Info" messages. This commit fixes the last bunch of messages in the QuectelRadio Delta FWU implementation to use Title Case. This simplifies handling in various scripts and other components.
2020-07-06Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Fixed format of FILE upload log messages.
2020-07-03Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Implemented firmware version check detection.
2020-07-03Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Cleanup for the printouts and status messages.
2020-07-03Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Simplified usage of step callbacks in the QuectelRadio class. Refactored existing function to use a wrapper and preven repetitive checks.
2020-07-03Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Started code cleanup before finishing the procedure. Renamed functions related to the delta radio firmware upgrade to follow established patterns: - uploadDeltaFirmwareFile -> fumoLocalInject - applyDeltaFirmwareFile -> fumoLocalApply - removeDeltaFirmwareFile -> fumoLocalCleanup - new function: updateFumoLocal - encapsulates all the magic for radios that may not support separate stages for the delta upload and delta apply
2020-07-03WIP: Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Initial implementation of the "Apply delta firmware" step. Requires cleanup.
2020-06-30Merge remote-tracking branch 'origin/master' into sk/quectel-delta-fwuSerhii Kostiuk1
2020-06-30Merge remote-tracking branch 'origin/master' into sk/quectel-delta-fwuSerhii Kostiuk1
2020-06-25[MTX-3489] mPower Oct20: Porting "LNA7 Intermediate Release" changesSerhii Kostiuk1
Merged all the changes from the intermediate release to master.
2020-06-05[GP-651] LNA7: Allow to start the OMA DM procedure when it is requiredSerhii Kostiuk1
Fixed totally invalid string formatting for the stepCb argument. The previous implementation caused Json::Value to select the following constructor: ```Value(const char* begin, const char* end); ///< Copy all, incl zeroes.``` Which, of course, resulted in OOM violations. Oops.
2020-06-05[GP-651] LNA7: Allow to start the OMA DM procedure when it is requiredSerhii Kostiuk1
Fixes after a code review: - increased timeout from 60 to 160 seconds for "Abnormal" cases; - added hanlding for the "DME Abnormal" URC; - added "kill OMA DM" logic for the timeout case.
2020-06-03[GP-651] LNA7: Allow to start the OMA DM procedure when it is requiredSerhii Kostiuk1
Fixed AT+QODM parameters. AT+QODM parameters are case-sensitive.
2020-06-02[GP-651] LNA7: Allow to start the OMA DM procedure when it is requiredSerhii Kostiuk1
This commits adds support for the Quectel-specific OMA DM commands. This allows to trigger OMA DM procedure om Verizon to fetch the corrent APN values and other settings from the network. Expected radio output on success: ``` +QODM: "DME",0,DM Start +QODM: "DME",0,DM End ``` Other +QODM URC codes are also possible according to information from Quectel forum: https://forums.quectel.com/t/what-is-the-meaning-of-qodm-fumo-report-failed/2444/5. But only "DM Start" and "DM End" responses are expected, supported and treated as correct in the libmts-io.
2020-05-30Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Initial implementation of the delta firmware image upload for Quectel radios.
2020-05-30Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Declared base interface and added started implementation for the QuectelRadio class. Implemented file listing (file status check) and file removal logic.
2020-05-29mPower Oct20: L4G1 libmts-io supportmykola.salomatin1