Attention is currently required from: fixeria.
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/libosmocore/+/35044?usp=email
to look at the new patch set (#2).
The following approvals got outdated and were removed:
Verified-1 by Jenkins Builder
Change subject: soft_uart: implement the transmitter
......................................................................
soft_uart: implement the transmitter
Change-Id: Ibcd9643227e5616efd8bbd7a1430feda6fcef45c
Related: OS#4396
---
M include/osmocom/core/soft_uart.h
M src/core/soft_uart.c
2 files changed, 104 insertions(+), 19 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/44/35044/2
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35044?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Ibcd9643227e5616efd8bbd7a1430feda6fcef45c
Gerrit-Change-Number: 35044
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: fixeria, laforge.
fixeria has uploaded a new patch set (#3) to the change originally created by laforge. ( https://gerrit.osmocom.org/c/libosmocore/+/30763?usp=email )
The following approvals got outdated and were removed:
Verified-1 by Jenkins Builder
Change subject: core: Add software UART implementation
......................................................................
core: Add software UART implementation
This patch brings a Work-in-Progress implementation of the software
UART (Universal Asynchronous Receiver/Transmitter) to libosmocore.
Not only it will be useful in the context of retro-networking, but
also it's needed for the MS-side CSD implementation (see OS#4396).
It should be noted that the definition of struct osmo_soft_uart
is intentionally kept private, since the API is not stable yet.
Currently, the following limitations apply:
* Only the receiver part is implemented, the transmitter is TBD.
* Parity checking is not implemented in the receiver part.
* Software flow control is not implemented.
These missing components will be addressed in subsequent patches.
Change-Id: I2ca95963fd5852ddb89bdd35b86b31489127fe84
---
M include/osmocom/core/Makefile.am
A include/osmocom/core/soft_uart.h
M src/core/Makefile.am
M src/core/libosmocore.map
A src/core/soft_uart.c
5 files changed, 388 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/63/30763/3
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/30763?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I2ca95963fd5852ddb89bdd35b86b31489127fe84
Gerrit-Change-Number: 30763
Gerrit-PatchSet: 3
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: fixeria.
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/libosmocore/+/35045?usp=email
to look at the new patch set (#2).
The following approvals got outdated and were removed:
Verified-1 by Jenkins Builder
Change subject: [WIP] soft_uart: implement OSMO_SUART_RX_MODE_N_FRAMES
......................................................................
[WIP] soft_uart: implement OSMO_SUART_RX_MODE_N_FRAMES
This is a hack allowing us to examine the receiver's internal buffer
without having to wait for a timeout to expire. I am not sure if
such mode would be useful for anything else. Maybe adding API to
access the Rx msgb would be a more flexible solution?
Change-Id: Ib3249a06c84f3ddb2723d0787db51873c4707d81
Related: OS#4396
---
M include/osmocom/core/soft_uart.h
M src/core/soft_uart.c
2 files changed, 67 insertions(+), 11 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/45/35045/2
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35045?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Ib3249a06c84f3ddb2723d0787db51873c4707d81
Gerrit-Change-Number: 35045
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: fixeria.
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/libosmocore/+/35046?usp=email
to look at the new patch set (#2).
The following approvals got outdated and were removed:
Verified-1 by Jenkins Builder
Change subject: soft_uart: add unit tests for the receiver and transmitter
......................................................................
soft_uart: add unit tests for the receiver and transmitter
Change-Id: Icdfa0c644548964d37940c32dc9dcfcfc53c3a19
Related: OS#4396
---
M tests/Makefile.am
A tests/soft_uart/soft_uart_test.c
A tests/soft_uart/soft_uart_test.ok
M tests/testsuite.at
4 files changed, 284 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/46/35046/2
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35046?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Icdfa0c644548964d37940c32dc9dcfcfc53c3a19
Gerrit-Change-Number: 35046
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: laforge.
Jenkins Builder has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/30763?usp=email )
Change subject: core: Add software UART implementation
......................................................................
Patch Set 2:
(2 comments)
File src/core/soft_uart.c:
Robot Comment from checkpatch (run ID jenkins-gerrit-lint-12426):
https://gerrit.osmocom.org/c/libosmocore/+/30763/comment/b0170fb0_f662a3f6
PS2, Line 160: for (size_t i = 0; i < n_ubits; i++) {
braces {} are not necessary for single statement blocks
Robot Comment from checkpatch (run ID jenkins-gerrit-lint-12426):
https://gerrit.osmocom.org/c/libosmocore/+/30763/comment/f508a9e9_5c625910
PS2, Line 196: for (size_t i = 0; i < n_ubits; i++) {
braces {} are not necessary for single statement blocks
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/30763?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I2ca95963fd5852ddb89bdd35b86b31489127fe84
Gerrit-Change-Number: 30763
Gerrit-PatchSet: 2
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Thu, 16 Nov 2023 09:06:18 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Jenkins Builder has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/35045?usp=email )
Change subject: [WIP] soft_uart: implement OSMO_SUART_RX_MODE_N_FRAMES
......................................................................
Patch Set 1:
(1 comment)
File src/core/soft_uart.c:
Robot Comment from checkpatch (run ID jenkins-gerrit-lint-12421):
https://gerrit.osmocom.org/c/libosmocore/+/35045/comment/fa1af3f2_d8acd214
PS1, Line 112: * b) when a parity/framing error is occured. */
'occured' may be misspelled - perhaps 'occurred'?
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35045?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Ib3249a06c84f3ddb2723d0787db51873c4707d81
Gerrit-Change-Number: 35045
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: Jenkins Builder
Gerrit-Comment-Date: Thu, 16 Nov 2023 09:06:01 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Attention is currently required from: laforge.
fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/30763?usp=email )
Change subject: core: Add software UART implementation
......................................................................
Set Ready For Review
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/30763?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I2ca95963fd5852ddb89bdd35b86b31489127fe84
Gerrit-Change-Number: 30763
Gerrit-PatchSet: 2
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Thu, 16 Nov 2023 09:02:56 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmocore/+/35045?usp=email )
Change subject: [WIP] soft_uart: implement OSMO_SUART_RX_MODE_N_FRAMES
......................................................................
[WIP] soft_uart: implement OSMO_SUART_RX_MODE_N_FRAMES
This is a hack allowing us to examine the receiver's internal buffer
without having to wait for a timeout to expire. I am not sure if
such mode would be useful for anything else. Maybe adding API to
access the Rx msgb would be a more flexible solution?
Change-Id: Ib3249a06c84f3ddb2723d0787db51873c4707d81
Related: OS#4396
---
M include/osmocom/core/soft_uart.h
M src/core/soft_uart.c
2 files changed, 67 insertions(+), 11 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/45/35045/1
diff --git a/include/osmocom/core/soft_uart.h b/include/osmocom/core/soft_uart.h
index 6088922..19af0cf 100644
--- a/include/osmocom/core/soft_uart.h
+++ b/include/osmocom/core/soft_uart.h
@@ -45,6 +45,14 @@
};
#endif
+/*! Rx data pulling mode */
+enum osmo_soft_uart_rx_mode {
+ /*! the .rx_cb() is called on timeout */
+ OSMO_SUART_RX_MODE_TIMEOUT,
+ /*! the .rx_cb() is called on a specified number of UART frames */
+ OSMO_SUART_RX_MODE_N_FRAMES,
+};
+
/* configuration for a soft-uart */
struct osmo_soft_uart_cfg {
/*! number of data bits (typically 5, 6, 7 or 8) */
@@ -53,14 +61,25 @@
uint8_t num_stop_bits;
/*! parity mode (none, even, odd) */
enum osmo_soft_uart_parity_mode parity_mode;
+
/*! size of transmit buffer */
unsigned int tx_buf_size;
- /*! size of receive buffer; UART will buffer up to that number of characters
- * before calling the receive call-back */
+ /*! size of receive buffer */
unsigned int rx_buf_size;
- /*! receive timeout; UART will flush receive buffer via the receive call-back
- * after indicated number of milli-seconds even if it is not full yet */
- unsigned int rx_timeout_ms;
+
+ /*! Rx data pulling mode */
+ enum osmo_soft_uart_rx_mode rx_pull_mode;
+ /*! Rx data pulling parameters */
+ union {
+ /*! receive timeout for OSMO_SUART_RX_MODE_TIMEOUT; UART will flush receive
+ * buffer via the receive call-back after indicated number of milli-seconds
+ * even if it is not full yet. */
+ unsigned int rx_timeout_ms;
+ /*! number of received UART frames for OSMO_SUART_RX_MODE_N_FRAMES; UART
+ * will flush receive buffer via the receive call-back after indicated number
+ * of UART frames had been received. */
+ unsigned int rx_n_uart_frames;
+ } rx_pull_param;
/*! opaque application-private data; passed to call-backs */
void *priv;
diff --git a/src/core/soft_uart.c b/src/core/soft_uart.c
index 9b6ca05..c7179a6 100644
--- a/src/core/soft_uart.c
+++ b/src/core/soft_uart.c
@@ -47,6 +47,7 @@
unsigned int flags;
unsigned int status;
struct osmo_timer_list timer;
+ unsigned int n_uart_frames;
enum suart_flow_state flow_state;
} rx;
struct {
@@ -71,7 +72,8 @@
.parity_mode = OSMO_SUART_PARITY_NONE,
.tx_buf_size = 1024,
.rx_buf_size = 1024,
- .rx_timeout_ms = 100,
+ .rx_pull_mode = OSMO_SUART_RX_MODE_TIMEOUT,
+ .rx_pull_param = { .rx_timeout_ms = 100 },
.priv = NULL,
.rx_cb = NULL,
.status_change_cb = NULL,
@@ -105,12 +107,29 @@
msgb_put_u8(suart->rx.msg, ch);
msg_len = msgb_length(suart->rx.msg);
- /* first character in new message: start timer */
- if (msg_len == 1) {
- osmo_timer_schedule(&suart->rx.timer, suart->cfg.rx_timeout_ms / 1000,
- (suart->cfg.rx_timeout_ms % 1000) * 1000);
- } else if (msg_len >= suart->cfg.rx_buf_size || suart->rx.flags) {
+ /* flush immediately:
+ * a) when the Rx buffer gets full;
+ * b) when a parity/framing error is occured. */
+ if (msg_len >= suart->cfg.rx_buf_size || suart->rx.flags) {
suart_flush_rx(suart);
+ return;
+ }
+
+ switch (suart->cfg.rx_pull_mode) {
+ case OSMO_SUART_RX_MODE_TIMEOUT:
+ /* first character in new message: start timer */
+ if (msg_len == 1) {
+ unsigned int rx_timeout_ms = suart->cfg.rx_pull_param.rx_timeout_ms;
+ osmo_timer_schedule(&suart->rx.timer, rx_timeout_ms / 1000,
+ (rx_timeout_ms % 1000) * 1000);
+ }
+ break;
+ case OSMO_SUART_RX_MODE_N_FRAMES:
+ if (suart->rx.n_uart_frames >= suart->cfg.rx_pull_param.rx_n_uart_frames) {
+ suart->rx.n_uart_frames = 0;
+ suart_flush_rx(suart);
+ }
+ break;
}
}
@@ -171,6 +190,7 @@
if (suart->rx.bit_count >= (suart->cfg.num_data_bits + suart->cfg.num_stop_bits)) {
/* we have accumulated enough stop bits */
+ suart->rx.n_uart_frames++;
suart_rx_ch(suart, suart->rx.shift_reg);
suart->rx.flow_state = SUART_FLOW_ST_IDLE;
}
@@ -358,10 +378,12 @@
if (cfg->rx_buf_size == 0)
return -EINVAL;
+#if 0
if (suart->cfg.rx_buf_size > cfg->rx_buf_size ||
suart->cfg.rx_timeout_ms > cfg->rx_timeout_ms) {
suart_flush_rx(suart);
}
+#endif
suart->cfg = *cfg;
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35045?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Ib3249a06c84f3ddb2723d0787db51873c4707d81
Gerrit-Change-Number: 35045
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: newchange