From 9ce2ce35d5f94c5d0b83ca8d9ceb21c8c1cf3cd4 Mon Sep 17 00:00:00 2001 From: Uros Majstorovic Date: Sat, 27 Feb 2021 03:17:28 +0100 Subject: cell/wifi refactoring --- fw/esp32/components/eos/cell.c | 16 ++------------- fw/esp32/components/eos/cell_data.c | 31 ----------------------------- fw/esp32/components/eos/cell_modem.c | 2 +- fw/esp32/components/eos/cell_pcm.c | 4 ++-- fw/esp32/components/eos/cell_pdp.c | 31 +++++++++++++++++++++++++++++ fw/esp32/components/eos/cell_voice.c | 4 ++++ fw/esp32/components/eos/include/cell.h | 36 ++++++++++++++++------------------ fw/esp32/components/eos/include/wifi.h | 9 +++++---- fw/esp32/components/eos/wifi.c | 35 +++++++++++++++++++-------------- 9 files changed, 82 insertions(+), 86 deletions(-) delete mode 100644 fw/esp32/components/eos/cell_data.c create mode 100644 fw/esp32/components/eos/cell_pdp.c (limited to 'fw/esp32') diff --git a/fw/esp32/components/eos/cell.c b/fw/esp32/components/eos/cell.c index 886cc7a..b31e973 100644 --- a/fw/esp32/components/eos/cell.c +++ b/fw/esp32/components/eos/cell.c @@ -49,18 +49,6 @@ static void _cell_handler(unsigned char _mtype, unsigned char *buffer, uint16_t case EOS_CELL_MTYPE_UART_GIVE: eos_modem_set_mode(cell_mode); break; - - case EOS_CELL_MTYPE_PCM_DATA: - eos_cell_pcm_push(buffer+1, size-1); - break; - - case EOS_CELL_MTYPE_PCM_START: - eos_cell_pcm_start(); - break; - - case EOS_CELL_MTYPE_PCM_STOP: - eos_cell_pcm_stop(); - break; } break; @@ -76,8 +64,8 @@ static void _cell_handler(unsigned char _mtype, unsigned char *buffer, uint16_t eos_cell_ussd_handler(mtype & ~EOS_CELL_MTYPE_MASK, buffer, size); break; - case EOS_CELL_MTYPE_DATA: - eos_cell_data_handler(mtype & ~EOS_CELL_MTYPE_MASK, buffer, size); + case EOS_CELL_MTYPE_PDP: + eos_cell_pdp_handler(mtype & ~EOS_CELL_MTYPE_MASK, buffer, size); break; } } diff --git a/fw/esp32/components/eos/cell_data.c b/fw/esp32/components/eos/cell_data.c deleted file mode 100644 index f9a755f..0000000 --- a/fw/esp32/components/eos/cell_data.c +++ /dev/null @@ -1,31 +0,0 @@ -#include -#include - -#include - -#include "eos.h" -#include "cell.h" - -void eos_cell_data_handler(unsigned char mtype, unsigned char *buffer, uint16_t size) { - char *apn, *user, *pass; - - buffer += 1; - size -= 1; - switch (mtype) { - case EOS_CELL_MTYPE_DATA_CONFIGURE: - apn = (char *)buffer; - user = apn + strlen(apn) + 1; - pass = user + strlen(user) + 1; - eos_ppp_set_apn(apn); - eos_ppp_set_auth(user, pass); - break; - - case EOS_CELL_MTYPE_DATA_CONNECT: - eos_ppp_connect(); - break; - - case EOS_CELL_MTYPE_DATA_DISCONNECT: - eos_ppp_disconnect(); - break; - } -} diff --git a/fw/esp32/components/eos/cell_modem.c b/fw/esp32/components/eos/cell_modem.c index 3bbce90..58dc97c 100644 --- a/fw/esp32/components/eos/cell_modem.c +++ b/fw/esp32/components/eos/cell_modem.c @@ -364,7 +364,7 @@ static void ppp_status_cb(ppp_pcb *pcb, int err_code, void *ctx) { ESP_LOGI(TAG," his_ipaddr = %s\n", ipaddr_ntoa(&pppif->gw)); ESP_LOGI(TAG," netmask = %s\n", ipaddr_ntoa(&pppif->netmask)); rbuf = eos_net_alloc(); - rbuf[0] = EOS_CELL_MTYPE_DATA | EOS_CELL_MTYPE_DATA_CONNECT; + rbuf[0] = EOS_CELL_MTYPE_PDP | EOS_CELL_MTYPE_PDP_CONNECT; rbuf[1] = EOS_OK; eos_net_send(EOS_NET_MTYPE_CELL, rbuf, 2); return; diff --git a/fw/esp32/components/eos/cell_pcm.c b/fw/esp32/components/eos/cell_pcm.c index 4930d66..cf3eeb7 100644 --- a/fw/esp32/components/eos/cell_pcm.c +++ b/fw/esp32/components/eos/cell_pcm.c @@ -61,14 +61,14 @@ static void i2s_event_task(void *pvParameters) { // Event of I2S receiving data if (!hold_cnt) { buf = eos_net_alloc(); - buf[0] = EOS_CELL_MTYPE_DEV | EOS_CELL_MTYPE_PCM_DATA; + buf[0] = EOS_CELL_MTYPE_VOICE | EOS_CELL_MTYPE_VOICE_PCM; bytes_r = eos_cell_pcm_read(buf + 1, PCM_MIC_WM); eos_net_send(EOS_NET_MTYPE_CELL, buf, bytes_r + 1); } else { hold_cnt--; if (hold_buf == NULL) { hold_buf = eos_net_alloc(); - hold_buf[0] = EOS_CELL_MTYPE_DEV | EOS_CELL_MTYPE_PCM_DATA; + hold_buf[0] = EOS_CELL_MTYPE_VOICE | EOS_CELL_MTYPE_VOICE_PCM; } if (1 + hold_bytes_r + PCM_MIC_WM <= EOS_NET_SIZE_BUF) hold_bytes_r += eos_cell_pcm_read(hold_buf + 1 + hold_bytes_r, PCM_MIC_WM); if (hold_cnt == 0) { diff --git a/fw/esp32/components/eos/cell_pdp.c b/fw/esp32/components/eos/cell_pdp.c new file mode 100644 index 0000000..1aa0575 --- /dev/null +++ b/fw/esp32/components/eos/cell_pdp.c @@ -0,0 +1,31 @@ +#include +#include + +#include + +#include "eos.h" +#include "cell.h" + +void eos_cell_pdp_handler(unsigned char mtype, unsigned char *buffer, uint16_t size) { + char *apn, *user, *pass; + + buffer += 1; + size -= 1; + switch (mtype) { + case EOS_CELL_MTYPE_PDP_CONFIG: + apn = (char *)buffer; + user = apn + strlen(apn) + 1; + pass = user + strlen(user) + 1; + eos_ppp_set_apn(apn); + eos_ppp_set_auth(user, pass); + break; + + case EOS_CELL_MTYPE_PDP_CONNECT: + eos_ppp_connect(); + break; + + case EOS_CELL_MTYPE_PDP_DISCONNECT: + eos_ppp_disconnect(); + break; + } +} diff --git a/fw/esp32/components/eos/cell_voice.c b/fw/esp32/components/eos/cell_voice.c index f820b63..f0655bd 100644 --- a/fw/esp32/components/eos/cell_voice.c +++ b/fw/esp32/components/eos/cell_voice.c @@ -57,6 +57,10 @@ void eos_cell_voice_handler(unsigned char mtype, unsigned char *buffer, uint16_t eos_modem_give(); break; + + case EOS_CELL_MTYPE_VOICE_PCM: + eos_cell_pcm_push(buffer+1, size-1); + break; } } diff --git a/fw/esp32/components/eos/include/cell.h b/fw/esp32/components/eos/include/cell.h index 07d1144..fa9a0e2 100644 --- a/fw/esp32/components/eos/include/cell.h +++ b/fw/esp32/components/eos/include/cell.h @@ -6,7 +6,7 @@ #define EOS_CELL_MTYPE_SMS 0x30 #define EOS_CELL_MTYPE_CBS 0x40 #define EOS_CELL_MTYPE_USSD 0x50 -#define EOS_CELL_MTYPE_DATA 0x70 +#define EOS_CELL_MTYPE_PDP 0x60 #define EOS_CELL_MTYPE_MASK 0xf0 #define EOS_CELL_MAX_MTYPE 8 @@ -16,20 +16,18 @@ #define EOS_CELL_MTYPE_UART_DATA 2 #define EOS_CELL_MTYPE_UART_TAKE 3 #define EOS_CELL_MTYPE_UART_GIVE 4 -#define EOS_CELL_MTYPE_PCM_DATA 5 -#define EOS_CELL_MTYPE_PCM_START 6 -#define EOS_CELL_MTYPE_PCM_STOP 7 -#define EOS_CELL_MTYPE_RESET 8 - -#define EOS_CELL_MTYPE_VOICE_DIAL 1 -#define EOS_CELL_MTYPE_VOICE_RING 2 -#define EOS_CELL_MTYPE_VOICE_ANSWER 3 -#define EOS_CELL_MTYPE_VOICE_HANGUP 4 -#define EOS_CELL_MTYPE_VOICE_BEGIN 5 -#define EOS_CELL_MTYPE_VOICE_END 6 -#define EOS_CELL_MTYPE_VOICE_MISS 7 -#define EOS_CELL_MTYPE_VOICE_BUSY 8 -#define EOS_CELL_MTYPE_VOICE_ERR 9 +#define EOS_CELL_MTYPE_RESET 5 + +#define EOS_CELL_MTYPE_VOICE_PCM 1 +#define EOS_CELL_MTYPE_VOICE_DIAL 2 +#define EOS_CELL_MTYPE_VOICE_RING 3 +#define EOS_CELL_MTYPE_VOICE_ANSWER 4 +#define EOS_CELL_MTYPE_VOICE_HANGUP 5 +#define EOS_CELL_MTYPE_VOICE_BEGIN 6 +#define EOS_CELL_MTYPE_VOICE_END 7 +#define EOS_CELL_MTYPE_VOICE_MISS 8 +#define EOS_CELL_MTYPE_VOICE_BUSY 9 +#define EOS_CELL_MTYPE_VOICE_ERR 10 #define EOS_CELL_MTYPE_SMS_LIST 1 #define EOS_CELL_MTYPE_SMS_SEND 2 @@ -40,9 +38,9 @@ #define EOS_CELL_MTYPE_USSD_REPLY 2 #define EOS_CELL_MTYPE_USSD_CANCEL 3 -#define EOS_CELL_MTYPE_DATA_CONFIGURE 1 -#define EOS_CELL_MTYPE_DATA_CONNECT 2 -#define EOS_CELL_MTYPE_DATA_DISCONNECT 3 +#define EOS_CELL_MTYPE_PDP_CONFIG 1 +#define EOS_CELL_MTYPE_PDP_CONNECT 2 +#define EOS_CELL_MTYPE_PDP_DISCONNECT 3 #define EOS_CELL_SMS_ADDRTYPE_INTL 1 #define EOS_CELL_SMS_ADDRTYPE_ALPHA 2 @@ -86,7 +84,7 @@ void eos_cell_pcm_stop(void); void eos_cell_voice_handler(unsigned char mtype, unsigned char *buffer, uint16_t size); void eos_cell_sms_handler(unsigned char mtype, unsigned char *buffer, uint16_t size); void eos_cell_ussd_handler(unsigned char mtype, unsigned char *buffer, uint16_t size); -void eos_cell_data_handler(unsigned char mtype, unsigned char *buffer, uint16_t size); +void eos_cell_pdp_handler(unsigned char mtype, unsigned char *buffer, uint16_t size); void eos_cell_voice_init(void); void eos_cell_sms_init(void); diff --git a/fw/esp32/components/eos/include/wifi.h b/fw/esp32/components/eos/include/wifi.h index d579fc5..11bccec 100644 --- a/fw/esp32/components/eos/include/wifi.h +++ b/fw/esp32/components/eos/include/wifi.h @@ -1,12 +1,13 @@ #define EOS_WIFI_MTYPE_SCAN 1 -#define EOS_WIFI_MTYPE_CONNECT 2 -#define EOS_WIFI_MTYPE_DISCONNECT 3 +#define EOS_WIFI_MTYPE_CONFIG 2 +#define EOS_WIFI_MTYPE_CONNECT 3 +#define EOS_WIFI_MTYPE_DISCONNECT 4 -#define EOS_WIFI_MAX_MTYPE 4 +#define EOS_WIFI_MAX_MTYPE 5 void eos_wifi_init(void); int eos_wifi_scan(void); -int eos_wifi_set_auth(char *ssid, char *pass); +int eos_wifi_set_config(char *ssid, char *pass); int eos_wifi_connect(void); int eos_wifi_disconnect(void); diff --git a/fw/esp32/components/eos/wifi.c b/fw/esp32/components/eos/wifi.c index 7fae635..05c91c1 100755 --- a/fw/esp32/components/eos/wifi.c +++ b/fw/esp32/components/eos/wifi.c @@ -126,14 +126,8 @@ static void wifi_event_handler(void *arg, esp_event_base_t event_base, int32_t e if (_disconnect) { rbuf = eos_net_alloc(); - if (_action == WIFI_ACTION_CONNECT) { - rbuf[0] = EOS_WIFI_MTYPE_CONNECT; - rbuf[1] = EOS_ERR; - eos_net_send(EOS_NET_MTYPE_WIFI, rbuf, 2); - } else { - rbuf[0] = EOS_WIFI_MTYPE_DISCONNECT; - eos_net_send(EOS_NET_MTYPE_WIFI, rbuf, 1); - } + rbuf[0] = EOS_WIFI_MTYPE_DISCONNECT; + eos_net_send(EOS_NET_MTYPE_WIFI, rbuf, 1); if (!_action) ret = esp_wifi_stop(); } else { ret = esp_wifi_connect(); @@ -175,26 +169,37 @@ static void wifi_event_handler(void *arg, esp_event_base_t event_base, int32_t e } static void wifi_handler(unsigned char _mtype, unsigned char *buffer, uint16_t size) { - int rv = EOS_OK; - uint8_t mtype = buffer[0]; + uint8_t mtype; + int rv; char *ssid, *pass; + if (size < 1) return; + + mtype = buffer[0]; + rv = EOS_OK; + buffer += 1; + size -= 1; + switch (mtype) { case EOS_WIFI_MTYPE_SCAN: rv = eos_wifi_scan(); break; + case EOS_WIFI_MTYPE_CONFIG: + ssid = (char *)buffer; + pass = ssid + strlen(ssid) + 1; + rv = eos_wifi_set_config(ssid, pass); + break; + case EOS_WIFI_MTYPE_CONNECT: - ssid = (char *)buffer+1; - pass = ssid+strlen(ssid)+1; - rv = eos_wifi_set_auth(ssid, pass); - if (!rv) rv = eos_wifi_connect(); + rv = eos_wifi_connect(); break; case EOS_WIFI_MTYPE_DISCONNECT: rv = eos_wifi_disconnect(); break; } + if (rv) ESP_LOGE(TAG, "MSG HANDLER ERR:%d MSG:%d", rv, mtype); } @@ -264,7 +269,7 @@ int eos_wifi_scan(void) { return rv; } -int eos_wifi_set_auth(char *ssid, char *pass) { +int eos_wifi_set_config(char *ssid, char *pass) { int rv = EOS_OK; xSemaphoreTake(mutex, portMAX_DELAY); -- cgit v1.2.3