summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)AuthorFiles
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
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-06Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk2
Added waitResponse overloads to the public interface of ICellularRadio.
2020-08-06Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Refactored MTS::IO::ICellularRadio::sendCommand. Moved response waiting code to the MTS::IO::ICellularRadio::waitResponse function. **Motivation** In many places in the modern libmts-io implementation there are cases when we need to wait for some response from the radio without executing or sending any commands. Such places may wait for some URC messages, acknowledge strings during data transmission and so on. One way to handle such cases is to use `sendCommand` with `cmd` argument set to an empty string. It generally works but according to POSIX: "If count is zero and fd refers to a file other than a regular file, the results are not specified." The other way to handle such cases is to use `isNeedMoreData` callback of `sendCommand` function to analyze all the data on the fly. But this approach may not work for data transfers when `sendCommand` and its std::string argument may not be used to store binary data with null characters within. This commit moves the "wait for the radio to answer" part to the separate function which allows reusablity of such a code.
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-07-28[GP-759] Added delta radio firmware upgrade support for Telit LE910C4-NFSerhii Kostiuk1
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-22Telit Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk1
Changes after code review: 1. Handle cases when the number of bytes written is different from the number of bytes requested to transfer. 2. Use fstat instead of lseek to determine the firmware size. 3. Renamed TelitRadio::startWrite and TelitRadio::abortWrite functions to better represent their applicability scope.
2020-07-17Code reviewAndrii Pientsov2
2020-07-17Code reviewAndrii Pientsov2
2020-07-16Add vendor firmware versionAndrii Pientsov4
2020-07-15MTX-3404 Code ReviewAndrii Pientsov3
2020-07-13MTX-3404 Code ReviewAndrii Pientsov3
2020-07-10MTX-3404 mPower Oct20: Delta Radio Firmware Upgrade - L4E1 - libmts-io supportAndrii Pientsov2
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
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 Kostiuk3
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 Kostiuk3
2020-06-30Merge remote-tracking branch 'origin/master' into sk/quectel-delta-fwuSerhii Kostiuk6
2020-06-25[MTX-3489] mPower Oct20: Porting "LNA7 Intermediate Release" changesSerhii Kostiuk3
Merged all the changes from the intermediate release to master.
2020-06-16[GP-654] Add SIM card-based carrier detectionSerhii Kostiuk2
Changes after a code review: - renamed "MTS Carrier Code" to the "Carrier Code"; - fixed descriptions for the new field and methods.
2020-06-16GP-654: Add SIM card-based carrier detectionSerhii Kostiuk2
This commit adds implementation of the SIM-based carrier detection. The goal for this implementation is to replace various places in the firmware that previously relied on the ICCID-based carrier detection, provide some layer of abstraction and forward compatibility for such places. It is particularly useful for fwSwitch radios with AUTO firmware selection capability.
2020-06-11Merge branch 'ms/MTX-3444_L4G1_support_implementation' into 'master' Jeff Hatch4
[MTX-3444] mPower Oct20: L4G1 libmts-io support See merge request !23
2020-06-10Merge branch 'restore-MTX-3262-single-instance-guard' into 'master' Jeff Hatch1
Restore mtx 3262 single instance guard See merge request !21
2020-06-03Merge branch 'vs/MTX-3251/modem-does-not-work' into 'master' Jeff Hatch1
Vs/mtx 3251/modem does not work See merge request !20
2020-06-02[GP-651] LNA7: Allow to start the OMA DM procedure when it is requiredSerhii Kostiuk3
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 Kostiuk3
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-30Quectel Delta Radio Firmware Upgrade support - libmts-io implementationSerhii Kostiuk2
Declared base interface and added stub implementation for the Delta Radio Firmware Upgrade support in libmts-io.
2020-05-29mPower Oct20: L4G1 libmts-io supportmykola.salomatin4
2020-05-26MTX-3262 mpower: lockfile rewrite for interprocess communication safetyMaksym Telychko1
Previous implementation was not thread/interprocess safe due to pid management Fixes: Single instance guard.
2020-04-17Revert "MTX-3262 mpower: lockfile rewrite for interprocess communication safety"Maksym Telychko1
This reverts commit bab7e498b6dc31b6967a59fd728c5e5fe59d485c.
2020-03-24MTX-3262 mpower: lockfile rewrite for interprocess communication safetyMaksym Telychko1
Previous implementation was not thread/interprocess safe due to pid management Fixes: Single instance guard.
2020-02-28add debug info to SerialConnection::doOpenSerhii Voloshynov1
2020-02-25[MTX-3239] Add "cellularMode" value to the radio-query --dynamicSerhii Kostiuk1
Added "cellularMode" value to the list dynamic (network stats) params
2020-02-25[MTX-3239] Add "cellularMode" value to the radio-query --dynamicSerhii Kostiuk2
Ported "cellularModeStr" function to MTS::IO::CellularRadio class. This function converts integer bitmap to comma-separated list of cellular modes.
2020-02-19Merge branch 'cleanup_MAT1_MVW1_radios' into 'master' Jeff Hatch4
MTX-3211 Remove the code that is used to support ME910C1-NV and ME910C1-NA See merge request !10
2020-02-18[MTX-3232] Add "supportedCellularModes" value to the radio-query --staticSerhii Kostiuk1
Defined "KEY_SUPPORTED_CELL_MODES" for a new field in radio-query --static output. This new field will return a comma-separated list of cellular modes (2g,3g,4g) that are supported by the modem.
2020-02-17MTX-3211 Remove the code that is used to support ME910C1-NV and ME910C1-NAAndrii Pientsov4
2020-02-13Commands CREG, CGREG and CEREG should be utilized to get registered statusAndrii Pientsov2
2020-01-10IN003925 Fix EG95 Cellular network registration checkingJeff Hatch1
2019-11-22[GP-359][MTX-3072] mPower Edge: LVW3 radio supportSerhii Kostiuk2
Added LVW3 radio support to the libmts-io.
2019-09-06MTX-2952 fix mPower: Cellular mode selection - Device does not support 4g ↵Maksym Telychko1
but radio-query returns 4g as well
2019-08-14Merge branch 'L4N1_MNA1' into 'master' 1.0.19Jeff Hatch2
L4 n1 mna1 See merge request !3
2019-08-05MTX-2898 mpower 2-3-4g: quectel methods for set-cellular-mode and common ↵Maksym Telychko3
methods for get-cellular-mode
2019-08-02Updates for fwswitch in L4N1 and MNA1 radiosJeff Hatch2
2019-07-31Removed obsolete methods get/set radio modeMaksym Telychko3
Use get/setCellularMode instead Revert of commits: 4ef332ec707946a3cf2a55473d05dfc9af3d4b11 [MTS-MTQ] network radio mode switch: refactoring method name 143feb6a4587817d28c77e4df3a1b594b855f5e5 [MTS-MTQ] RAT mode switch: implementation for telit and quectel
2019-07-30MTX-2891 mpower 2-3-4g switch refactoring: enumsMaksym Telychko3
2019-07-29MTX-2891 mpower 2-3-4g switch refactoring: method namesMaksym Telychko4