<feed xmlns='http://www.w3.org/2005/Atom'>
<title>libmts-io.git/include/mts, branch 1.0.25</title>
<subtitle>MultiTech IO C++ Library</subtitle>
<link rel='alternate' type='text/html' href='https://git.multitech.net/cgit/libmts-io.git/'/>
<entry>
<title>[MTX-3998] mPower R. Apr 2021: +CEMODE shall be set to CEMODE=2 - Quectel - GP-1111</title>
<updated>2021-04-16T15:50:15+00:00</updated>
<author>
<name>mykola.salomatin</name>
<email>mykola.salomatin@globallogic.com</email>
</author>
<published>2021-04-16T15:50:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.multitech.net/cgit/libmts-io.git/commit/?id=ac88b70987f59e89ce5257941e61ad4f1021d65f'/>
<id>ac88b70987f59e89ce5257941e61ad4f1021d65f</id>
<content type='text'>
Refactoring after review
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Refactoring after review
</pre>
</div>
</content>
</entry>
<entry>
<title>[MTX-3998] mPower R. Apr 2021: +CEMODE shall be set to CEMODE=2 - Quectel - GP-1111</title>
<updated>2021-04-15T17:47:36+00:00</updated>
<author>
<name>mykola.salomatin</name>
<email>mykola.salomatin@globallogic.com</email>
</author>
<published>2021-04-15T17:47:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.multitech.net/cgit/libmts-io.git/commit/?id=6cab1e29fc2031a76c87e49c3bcdd7c5db8f40dc'/>
<id>6cab1e29fc2031a76c87e49c3bcdd7c5db8f40dc</id>
<content type='text'>
Refactoring common functions, telit and quectel functions related to CEMODE switching
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Refactoring common functions, telit and quectel functions related to CEMODE switching
</pre>
</div>
</content>
</entry>
<entry>
<title>[MTX-3998] mPower R. Apr 2021: +CEMODE shall be set to CEMODE=2 - Quectel - GP-1111</title>
<updated>2021-04-15T14:52:10+00:00</updated>
<author>
<name>mykola.salomatin</name>
<email>mykola.salomatin@globallogic.com</email>
</author>
<published>2021-04-15T14:52:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.multitech.net/cgit/libmts-io.git/commit/?id=67a991ff3d772d2f81cb9907e1a710a88436f7c7'/>
<id>67a991ff3d772d2f81cb9907e1a710a88436f7c7</id>
<content type='text'>
Added CEMODE switching support for Quectel radios
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Added CEMODE switching support for Quectel radios
</pre>
</div>
</content>
</entry>
<entry>
<title>[GP-1111] mPower R. Apr 2021: +CEMODE shall be set to CEMODE=2 - libmts-io for Telit</title>
<updated>2021-03-31T19:54:54+00:00</updated>
<author>
<name>rodion.shyshkin</name>
<email>rodion.shyshkin@globallogic.com</email>
</author>
<published>2021-03-31T19:54:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.multitech.net/cgit/libmts-io.git/commit/?id=76df85f676adde6f31c35f7809f9f7794baca2a1'/>
<id>76df85f676adde6f31c35f7809f9f7794baca2a1</id>
<content type='text'>
Changes after a code review.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Changes after a code review.
</pre>
</div>
</content>
</entry>
<entry>
<title>[GP-1111] mPower R. Apr 2021: +CEMODE shall be set to CEMODE=2 - libmts-io for Telit</title>
<updated>2021-03-31T19:29:58+00:00</updated>
<author>
<name>rodion.shyshkin</name>
<email>rodion.shyshkin@globallogic.com</email>
</author>
<published>2021-03-31T19:29:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.multitech.net/cgit/libmts-io.git/commit/?id=2ff46750ec3f1004a5c153944c18dbb081911a03'/>
<id>2ff46750ec3f1004a5c153944c18dbb081911a03</id>
<content type='text'>
Changes after a code review
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Changes after a code review
</pre>
</div>
</content>
</entry>
<entry>
<title>[GP-1111] mPower R. Apr 2021: +CEMODE shall be set to CEMODE=2 - libmts-io for Telit</title>
<updated>2021-03-31T17:49:08+00:00</updated>
<author>
<name>rodion.shyshkin</name>
<email>rodion.shyshkin@globallogic.com</email>
</author>
<published>2021-03-31T17:49:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.multitech.net/cgit/libmts-io.git/commit/?id=285cee922e229cb1bbd704e6227dbbb3756bd889'/>
<id>285cee922e229cb1bbd704e6227dbbb3756bd889</id>
<content type='text'>
Adding an ability to set UE mode of operation to libmts-io.

There was added two clear virtual methods in iCellularRadio,
correct implementation for them for Telit LTE modems and implementation
with error messages for all other.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adding an ability to set UE mode of operation to libmts-io.

There was added two clear virtual methods in iCellularRadio,
correct implementation for them for Telit LTE modems and implementation
with error messages for all other.
</pre>
</div>
</content>
</entry>
<entry>
<title>Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementation</title>
<updated>2020-08-07T13:03:56+00:00</updated>
<author>
<name>Serhii Kostiuk</name>
<email>serhii.o.kostiuk@globallogic.com</email>
</author>
<published>2020-08-07T13:03:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.multitech.net/cgit/libmts-io.git/commit/?id=b32dbb2c5f12fbacf598edb812acab816068de00'/>
<id>b32dbb2c5f12fbacf598edb812acab816068de00</id>
<content type='text'>
Small improvements in code comments.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Small improvements in code comments.
</pre>
</div>
</content>
</entry>
<entry>
<title>Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementation</title>
<updated>2020-08-07T12:52:22+00:00</updated>
<author>
<name>Serhii Kostiuk</name>
<email>serhii.o.kostiuk@globallogic.com</email>
</author>
<published>2020-08-06T11:47:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.multitech.net/cgit/libmts-io.git/commit/?id=c1a58778eecd0115d746afbca1079683b244b672'/>
<id>c1a58778eecd0115d746afbca1079683b244b672</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementation</title>
<updated>2020-08-06T11:06:19+00:00</updated>
<author>
<name>Serhii Kostiuk</name>
<email>serhii.o.kostiuk@globallogic.com</email>
</author>
<published>2020-08-06T11:06:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.multitech.net/cgit/libmts-io.git/commit/?id=e1855057708468bc5383d948be70da7179730231'/>
<id>e1855057708468bc5383d948be70da7179730231</id>
<content type='text'>
Added waitResponse overloads to the public interface of ICellularRadio.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Added waitResponse overloads to the public interface of ICellularRadio.
</pre>
</div>
</content>
</entry>
<entry>
<title>Quectel EG25-G Delta Radio Firmware Upgrade support - libmts-io implementation</title>
<updated>2020-08-06T10:22:34+00:00</updated>
<author>
<name>Serhii Kostiuk</name>
<email>serhii.o.kostiuk@globallogic.com</email>
</author>
<published>2020-08-06T10:11:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.multitech.net/cgit/libmts-io.git/commit/?id=96445eaa166dd8f4ba99014f5eea2c1146b9db80'/>
<id>96445eaa166dd8f4ba99014f5eea2c1146b9db80</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
</feed>
