Skip to content

Commit 8b85c6b

Browse files
committed
mbed: add new GSM patches
1 parent c00bdb9 commit 8b85c6b

4 files changed

+236
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
From 0611201dfb21fcc36e0d37e283a7e8bb44664ec8 Mon Sep 17 00:00:00 2001
2+
From: pennam <m.pennasilico@arduino.cc>
3+
Date: Fri, 17 Nov 2023 17:25:50 +0100
4+
Subject: [PATCH 223/226] CellularDevice: avoid callback data is changed before
5+
attached callback is changed
6+
7+
---
8+
.../source/framework/device/CellularDevice.cpp | 10 +++++-----
9+
1 file changed, 5 insertions(+), 5 deletions(-)
10+
11+
diff --git a/connectivity/cellular/source/framework/device/CellularDevice.cpp b/connectivity/cellular/source/framework/device/CellularDevice.cpp
12+
index 50d900e14a..1f53b33e61 100644
13+
--- a/connectivity/cellular/source/framework/device/CellularDevice.cpp
14+
+++ b/connectivity/cellular/source/framework/device/CellularDevice.cpp
15+
@@ -180,6 +180,11 @@ void CellularDevice::stm_callback(nsapi_event_t ev, intptr_t ptr)
16+
17+
void CellularDevice::cellular_callback(nsapi_event_t ev, intptr_t ptr, CellularContext *ctx)
18+
{
19+
+ // forward to callback function if set by attach(...).
20+
+ if (_status_cb) {
21+
+ _status_cb(ev, ptr);
22+
+ }
23+
+
24+
if (ev >= NSAPI_EVENT_CELLULAR_STATUS_BASE && ev <= NSAPI_EVENT_CELLULAR_STATUS_END) {
25+
cellular_connection_status_t cell_ev = (cellular_connection_status_t)ev;
26+
cell_callback_data_t *ptr_data = (cell_callback_data_t *)ptr;
27+
@@ -220,11 +225,6 @@ void CellularDevice::cellular_callback(nsapi_event_t ev, intptr_t ptr, CellularC
28+
}
29+
curr = curr->_next;
30+
}
31+
-
32+
- // forward to callback function if set by attach(...).
33+
- if (_status_cb) {
34+
- _status_cb(ev, ptr);
35+
- }
36+
}
37+
38+
nsapi_error_t CellularDevice::shutdown()
39+
--
40+
2.42.0
41+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
From 973a19b25200a2d11746ea8196a8403f189e13a7 Mon Sep 17 00:00:00 2001
2+
From: pennam <m.pennasilico@arduino.cc>
3+
Date: Fri, 17 Nov 2023 17:29:39 +0100
4+
Subject: [PATCH 224/226] ATHandler: do not temporarily change debug options to
5+
partially trace AT commands
6+
7+
---
8+
connectivity/cellular/source/framework/device/ATHandler.cpp | 5 -----
9+
1 file changed, 5 deletions(-)
10+
11+
diff --git a/connectivity/cellular/source/framework/device/ATHandler.cpp b/connectivity/cellular/source/framework/device/ATHandler.cpp
12+
index f305fd8af5..36d21243f8 100644
13+
--- a/connectivity/cellular/source/framework/device/ATHandler.cpp
14+
+++ b/connectivity/cellular/source/framework/device/ATHandler.cpp
15+
@@ -1244,12 +1244,7 @@ void ATHandler::handle_start(const char *cmd, const char *cmd_chr)
16+
}
17+
_cmd_buffer[len] = '\0';
18+
19+
- const bool temp_state = get_debug();
20+
- set_debug(true);
21+
-
22+
cmd_start(_cmd_buffer);
23+
-
24+
- set_debug(temp_state);
25+
}
26+
27+
void ATHandler::cmd_start_stop(const char *cmd, const char *cmd_chr, const char *format, ...)
28+
--
29+
2.42.0
30+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
From 1e2795ce9a47146d8c87e4ff957ac3784482e075 Mon Sep 17 00:00:00 2001
2+
From: pennam <m.pennasilico@arduino.cc>
3+
Date: Fri, 17 Nov 2023 17:57:49 +0100
4+
Subject: [PATCH 225/226] CellularStateMachine: add state data to timeout and
5+
retry callbacks
6+
7+
---
8+
.../framework/common/CellularCommon.h | 20 +++++++++++++++++++
9+
.../framework/device/CellularStateMachine.h | 2 ++
10+
.../framework/device/CellularStateMachine.cpp | 11 +++++++---
11+
3 files changed, 30 insertions(+), 3 deletions(-)
12+
13+
diff --git a/connectivity/cellular/include/cellular/framework/common/CellularCommon.h b/connectivity/cellular/include/cellular/framework/common/CellularCommon.h
14+
index f0466e88cf..96e25dc991 100644
15+
--- a/connectivity/cellular/include/cellular/framework/common/CellularCommon.h
16+
+++ b/connectivity/cellular/include/cellular/framework/common/CellularCommon.h
17+
@@ -47,6 +47,26 @@ struct cell_signal_quality_t {
18+
}
19+
};
20+
21+
+struct cell_timeout_cb_t {
22+
+ int timeout; /* configured timeout */
23+
+ int state; /* cellular state */
24+
+ cell_timeout_cb_t()
25+
+ {
26+
+ timeout = -1;
27+
+ state = -1;
28+
+ }
29+
+};
30+
+
31+
+struct cell_retry_cb_t {
32+
+ int retry_count; /* retry count */
33+
+ int state; /* cellular state */
34+
+ cell_retry_cb_t()
35+
+ {
36+
+ retry_count = -1;
37+
+ state = -1;
38+
+ }
39+
+};
40+
+
41+
/**
42+
* Cellular specific event changes.
43+
* Connect and disconnect are handled via NSAPI_EVENT_CONNECTION_STATUS_CHANGE
44+
diff --git a/connectivity/cellular/include/cellular/framework/device/CellularStateMachine.h b/connectivity/cellular/include/cellular/framework/device/CellularStateMachine.h
45+
index 67912e463c..aed9d615ce 100644
46+
--- a/connectivity/cellular/include/cellular/framework/device/CellularStateMachine.h
47+
+++ b/connectivity/cellular/include/cellular/framework/device/CellularStateMachine.h
48+
@@ -189,6 +189,8 @@ private:
49+
bool _command_success;
50+
bool _is_retry;
51+
cell_callback_data_t _cb_data;
52+
+ cell_timeout_cb_t _timeout_cb_data;
53+
+ cell_retry_cb_t _retry_cb_data;
54+
cellular_connection_status_t _current_event;
55+
int _status;
56+
PlatformMutex _mutex;
57+
diff --git a/connectivity/cellular/source/framework/device/CellularStateMachine.cpp b/connectivity/cellular/source/framework/device/CellularStateMachine.cpp
58+
index 833f1d2239..37416ca72e 100644
59+
--- a/connectivity/cellular/source/framework/device/CellularStateMachine.cpp
60+
+++ b/connectivity/cellular/source/framework/device/CellularStateMachine.cpp
61+
@@ -61,7 +61,7 @@ CellularStateMachine::CellularStateMachine(CellularDevice &device, events::Event
62+
_start_time(rand() % (MBED_CONF_CELLULAR_RANDOM_MAX_START_DELAY)),
63+
#endif // MBED_CONF_CELLULAR_RANDOM_MAX_START_DELAY
64+
_event_timeout(-1s), _event_id(-1), _plmn(0), _command_success(false),
65+
- _is_retry(false), _cb_data(), _current_event(CellularDeviceReady), _status(0)
66+
+ _is_retry(false), _cb_data(), _timeout_cb_data(), _retry_cb_data(), _current_event(CellularDeviceReady), _status(0)
67+
{
68+
69+
// set initial retry values in seconds
70+
@@ -289,8 +289,10 @@ void CellularStateMachine::retry_state_or_fail()
71+
if (_retry_count < _retry_array_length) {
72+
tr_debug("%s: retry %d/%d", get_state_string(_state), _retry_count, _retry_array_length);
73+
// send info to application/driver about error logic so it can implement proper error logic
74+
+ _retry_cb_data.retry_count = _retry_count;
75+
+ _retry_cb_data.state = _state;
76+
_cb_data.status_data = _current_event;
77+
- _cb_data.data = &_retry_count;
78+
+ _cb_data.data = &_retry_cb_data;
79+
_cb_data.error = NSAPI_ERROR_OK;
80+
send_event_cb(CellularStateRetryEvent);
81+
82+
@@ -680,8 +682,11 @@ void CellularStateMachine::send_event_cb(cellular_connection_status_t status)
83+
84+
void CellularStateMachine::change_timeout(const std::chrono::duration<int, std::milli> &timeout)
85+
{
86+
+ _timeout_cb_data.timeout = timeout.count();
87+
+ _timeout_cb_data.state = _state;
88+
+
89+
_cb_data.status_data = _current_event;
90+
- _cb_data.data = &timeout;
91+
+ _cb_data.data = &_timeout_cb_data;
92+
_cb_data.error = NSAPI_ERROR_OK;
93+
// event callback is a preferred method to communicate to CellularDevice,
94+
// for example calling CellularDevice::set_timeout would call back to this class
95+
--
96+
2.42.0
97+
+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
From aa22f048ae886adcc032ba2fefc7e1f90aa2b693 Mon Sep 17 00:00:00 2001
2+
From: pennam <m.pennasilico@arduino.cc>
3+
Date: Tue, 21 Nov 2023 14:50:08 +0100
4+
Subject: [PATCH 226/226] Gemalto Cinterion: improve trace output
5+
6+
* Do not flood serial monitor with tr_info prints
7+
* Align usage of "\n"
8+
---
9+
.../CINTERION/GEMALTO_CINTERION_CellularContext.cpp | 2 +-
10+
.../GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp | 8 ++++----
11+
2 files changed, 5 insertions(+), 5 deletions(-)
12+
13+
diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp
14+
index 7ee2c8e53c..d4ae578f09 100644
15+
--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp
16+
+++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularContext.cpp
17+
@@ -122,7 +122,7 @@ nsapi_error_t GEMALTO_CINTERION_CellularContext::do_user_authentication()
18+
return NSAPI_ERROR_AUTH_FAILURE;
19+
}
20+
} else {
21+
- tr_info("Empty pwd and username fields: no need for authentication\n");
22+
+ tr_info("Empty pwd and username fields: no need for authentication");
23+
}
24+
25+
return NSAPI_ERROR_OK;
26+
diff --git a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp
27+
index fc2e8985d7..ac2a54282a 100644
28+
--- a/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp
29+
+++ b/connectivity/drivers/cellular/GEMALTO/CINTERION/GEMALTO_CINTERION_CellularStack.cpp
30+
@@ -284,7 +284,7 @@ nsapi_error_t GEMALTO_CINTERION_CellularStack::gethostbyname(const char *host, S
31+
_at.resp_stop();
32+
if (size > 0) {
33+
//Valid string received
34+
- tr_info("Read %d bytes. Valid string: %s\n", size, ipAddress);
35+
+ tr_info("Read %d bytes. Valid string: %s", size, ipAddress);
36+
// _at.restore_at_timeout();
37+
if (!address->set_ip_address(ipAddress)) {
38+
_at.unlock();
39+
@@ -292,7 +292,7 @@ nsapi_error_t GEMALTO_CINTERION_CellularStack::gethostbyname(const char *host, S
40+
}
41+
} else {
42+
//Null string received
43+
- tr_info("Read %d bytes. Null string\n", size);
44+
+ tr_info("Read %d bytes. Null string", size);
45+
return NSAPI_ERROR_NO_ADDRESS;
46+
}
47+
}
48+
@@ -550,7 +550,7 @@ nsapi_size_or_error_t GEMALTO_CINTERION_CellularStack::socket_recvfrom_impl(Cell
49+
size = UDP_PACKET_SIZE;
50+
}
51+
52+
- tr_info("requesting %d bytes\n", size);
53+
+ tr_debug("requesting %d bytes\n", size);
54+
_at.cmd_start_stop("^SISR", "=", "%d%d", socket->id, size);
55+
56+
sisr_retry:
57+
@@ -574,7 +574,7 @@ sisr_retry:
58+
59+
nsapi_size_or_error_t len = _at.read_int();
60+
if (len == 0) {
61+
- tr_warn("Socket %d no data", socket->id);
62+
+ tr_debug("Socket %d no data", socket->id);
63+
_at.resp_stop();
64+
RESTORE_URCs_AND_RETURN(NSAPI_ERROR_WOULD_BLOCK);
65+
}
66+
--
67+
2.42.0
68+

0 commit comments

Comments
 (0)