@@ -34,6 +34,7 @@ LOG_MODULE_REGISTER(ctr_lte_link, CONFIG_CTR_LTE_LINK_LOG_LEVEL);
34
34
#define RESET_PAUSE K_SECONDS(3)
35
35
#define WAKE_UP_DELAY K_MSEC(100)
36
36
#define WAKE_UP_PAUSE K_MSEC(100)
37
+ #define TX_GUARD_TIME K_MSEC(10)
37
38
38
39
#define TX_LINE_PREFIX ""
39
40
#define TX_LINE_SUFFIX "\r\n"
@@ -75,6 +76,7 @@ struct ctr_lte_link_data {
75
76
struct k_pipe rx_pipe ;
76
77
struct k_sem rx_disabled_sem ;
77
78
struct k_sem tx_finished_sem ;
79
+ k_timepoint_t tx_timepoint ;
78
80
struct k_work rx_loss_work ;
79
81
struct k_work rx_receive_work ;
80
82
struct k_work rx_restart_work ;
@@ -630,7 +632,7 @@ static int ctr_lte_link_disable_uart_(const struct device *dev)
630
632
631
633
static int ctr_lte_link_enter_data_mode_ (const struct device * dev )
632
634
{
633
- LOG_INF ("Enter data mode" );
635
+ LOG_DBG ("Enter data mode" );
634
636
635
637
if (k_is_in_isr ()) {
636
638
return - EWOULDBLOCK ;
@@ -654,7 +656,7 @@ static int ctr_lte_link_enter_data_mode_(const struct device *dev)
654
656
655
657
static int ctr_lte_link_exit_data_mode_ (const struct device * dev )
656
658
{
657
- LOG_INF ("Exit data mode" );
659
+ LOG_DBG ("Exit data mode" );
658
660
659
661
if (k_is_in_isr ()) {
660
662
return - EWOULDBLOCK ;
@@ -678,7 +680,7 @@ static int ctr_lte_link_exit_data_mode_(const struct device *dev)
678
680
679
681
static int ctr_lte_link_enter_dialog_ (const struct device * dev )
680
682
{
681
- LOG_INF ("Enter dialog" );
683
+ LOG_DBG ("Enter dialog" );
682
684
683
685
if (k_is_in_isr ()) {
684
686
return - EWOULDBLOCK ;
@@ -700,7 +702,7 @@ static int ctr_lte_link_enter_dialog_(const struct device *dev)
700
702
701
703
static int ctr_lte_link_exit_dialog_ (const struct device * dev )
702
704
{
703
- LOG_INF ("Exit dialog" );
705
+ LOG_DBG ("Exit dialog" );
704
706
705
707
if (k_is_in_isr ()) {
706
708
return - EWOULDBLOCK ;
@@ -770,6 +772,10 @@ static int ctr_lte_link_send_line_(const struct device *dev, k_timeout_t timeout
770
772
771
773
strcat (get_data (dev )-> tx_line_buf , TX_LINE_SUFFIX );
772
774
775
+ if (!sys_timepoint_expired (get_data (dev )-> tx_timepoint )) {
776
+ k_sleep (sys_timepoint_timeout (get_data (dev )-> tx_timepoint ));
777
+ }
778
+
773
779
ret = uart_tx (get_config (dev )-> uart_dev , get_data (dev )-> tx_line_buf ,
774
780
strlen (get_data (dev )-> tx_line_buf ), SYS_FOREVER_US );
775
781
if (ret ) {
@@ -785,6 +791,8 @@ static int ctr_lte_link_send_line_(const struct device *dev, k_timeout_t timeout
785
791
return ret ;
786
792
}
787
793
794
+ get_data (dev )-> tx_timepoint = sys_timepoint_calc (TX_GUARD_TIME );
795
+
788
796
k_mutex_unlock (& get_data (dev )-> lock );
789
797
790
798
return 0 ;
@@ -800,10 +808,10 @@ static int ctr_lte_link_recv_line_(const struct device *dev, k_timeout_t timeout
800
808
801
809
k_mutex_lock (& get_data (dev )-> lock , K_FOREVER );
802
810
803
- if (!get_data (dev )-> enabled ) {
804
- k_mutex_unlock (& get_data (dev )-> lock );
805
- return - EBUSY ;
806
- }
811
+ // if (!get_data(dev)->enabled) {
812
+ // k_mutex_unlock(&get_data(dev)->lock);
813
+ // return -EBUSY;
814
+ // }
807
815
808
816
if (get_data (dev )-> in_data_mode ) {
809
817
k_mutex_unlock (& get_data (dev )-> lock );
@@ -850,10 +858,10 @@ static int ctr_lte_link_free_line_(const struct device *dev, char *line)
850
858
851
859
k_mutex_lock (& get_data (dev )-> lock , K_FOREVER );
852
860
853
- if (!get_data (dev )-> enabled ) {
854
- k_mutex_unlock (& get_data (dev )-> lock );
855
- return - EBUSY ;
856
- }
861
+ // if (!get_data(dev)->enabled) {
862
+ // k_mutex_unlock(&get_data(dev)->lock);
863
+ // return -EBUSY;
864
+ // }
857
865
858
866
k_heap_free (& get_data (dev )-> rx_heap , line );
859
867
LOG_DBG ("Released from heap: %p" , (void * )line );
0 commit comments