diff options
-rw-r--r-- | fw/esp32/components/eos/cell.c | 16 | ||||
-rw-r--r-- | fw/esp32/components/eos/cell_modem.c | 2 | ||||
-rw-r--r-- | fw/esp32/components/eos/cell_pcm.c | 4 | ||||
-rw-r--r-- | fw/esp32/components/eos/cell_pdp.c (renamed from fw/esp32/components/eos/cell_data.c) | 8 | ||||
-rw-r--r-- | fw/esp32/components/eos/cell_voice.c | 4 | ||||
-rw-r--r-- | fw/esp32/components/eos/include/cell.h | 36 | ||||
-rw-r--r-- | fw/esp32/components/eos/include/wifi.h | 9 | ||||
-rwxr-xr-x | fw/esp32/components/eos/wifi.c | 35 | ||||
-rw-r--r-- | fw/fe310/eos/cell.h | 34 | ||||
-rw-r--r-- | fw/fe310/eos/wifi.c | 25 | ||||
-rw-r--r-- | fw/fe310/eos/wifi.h | 11 | ||||
-rw-r--r-- | fw/fe310/test/Makefile | 2 | ||||
-rw-r--r-- | fw/fe310/test/cell_data.h | 4 | ||||
-rw-r--r-- | fw/fe310/test/cell_pdp.c (renamed from fw/fe310/test/cell_data.c) | 62 | ||||
-rw-r--r-- | fw/fe310/test/cell_pdp.h | 4 | ||||
-rw-r--r-- | fw/fe310/test/main.c | 9 | ||||
-rw-r--r-- | fw/fe310/test/phone.c | 39 | ||||
-rw-r--r-- | fw/fe310/test/wifi.c | 33 |
18 files changed, 168 insertions, 169 deletions
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_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_data.c b/fw/esp32/components/eos/cell_pdp.c index f9a755f..1aa0575 100644 --- a/fw/esp32/components/eos/cell_data.c +++ b/fw/esp32/components/eos/cell_pdp.c @@ -6,13 +6,13 @@ #include "eos.h" #include "cell.h" -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) { char *apn, *user, *pass; buffer += 1; size -= 1; switch (mtype) { - case EOS_CELL_MTYPE_DATA_CONFIGURE: + case EOS_CELL_MTYPE_PDP_CONFIG: apn = (char *)buffer; user = apn + strlen(apn) + 1; pass = user + strlen(user) + 1; @@ -20,11 +20,11 @@ void eos_cell_data_handler(unsigned char mtype, unsigned char *buffer, uint16_t eos_ppp_set_auth(user, pass); break; - case EOS_CELL_MTYPE_DATA_CONNECT: + case EOS_CELL_MTYPE_PDP_CONNECT: eos_ppp_connect(); break; - case EOS_CELL_MTYPE_DATA_DISCONNECT: + 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); diff --git a/fw/fe310/eos/cell.h b/fw/fe310/eos/cell.h index 90bb349..0fc2052 100644 --- a/fw/fe310/eos/cell.h +++ b/fw/fe310/eos/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 diff --git a/fw/fe310/eos/wifi.c b/fw/fe310/eos/wifi.c index c3449e8..ca29a95 100644 --- a/fw/fe310/eos/wifi.c +++ b/fw/fe310/eos/wifi.c @@ -43,28 +43,3 @@ eos_evt_handler_t eos_wifi_get_handler(unsigned char mtype) { if (mtype < EOS_WIFI_MAX_MTYPE) return evt_handler[mtype]; return NULL; } - -void eos_wifi_scan(void) { - unsigned char *buffer = eos_net_alloc(); - buffer[0] = EOS_WIFI_MTYPE_SCAN; - eos_net_send(EOS_NET_MTYPE_WIFI, buffer, 1, 0); -} - -void eos_wifi_connect(const char *ssid, const char *pass) { - int ssid_len = strlen(ssid); - int pass_len = strlen(pass); - unsigned char *buffer = eos_net_alloc(); - - buffer[0] = EOS_WIFI_MTYPE_CONNECT; - strcpy(buffer+1, ssid); - buffer[ssid_len+1] = 0; - strcpy(buffer+ssid_len+2, pass); - buffer[ssid_len+pass_len+2] = 0; - eos_net_send(EOS_NET_MTYPE_WIFI, buffer, ssid_len+pass_len+3, 0); -} - -void eos_wifi_disconnect(void) { - unsigned char *buffer = eos_net_alloc(); - buffer[0] = EOS_WIFI_MTYPE_DISCONNECT; - eos_net_send(EOS_NET_MTYPE_WIFI, buffer, 1, 0); -} diff --git a/fw/fe310/eos/wifi.h b/fw/fe310/eos/wifi.h index 57048af..bb629ed 100644 --- a/fw/fe310/eos/wifi.h +++ b/fw/fe310/eos/wifi.h @@ -2,15 +2,12 @@ #include "event.h" #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); void eos_wifi_set_handler(unsigned char mtype, eos_evt_handler_t handler); eos_evt_handler_t eos_wifi_get_handler(unsigned char mtype); - -void eos_wifi_scan(void); -void eos_wifi_connect(const char *ssid, const char *pass); -void eos_wifi_disconnect(void); diff --git a/fw/fe310/test/Makefile b/fw/fe310/test/Makefile index 53e6f2d..aef5f29 100644 --- a/fw/fe310/test/Makefile +++ b/fw/fe310/test/Makefile @@ -3,7 +3,7 @@ include ../common.mk CFLAGS += -I../eos -I../bsp/include -I../bsp/drivers LDFLAGS = $(CFLAGS) -L.. -Wl,--gc-sections -nostartfiles -nostdlib -Wl,--start-group -lc -lm -lgcc -leos -Wl,--end-group -T../bsp/default.lds -DEPS = main.o status.o phone.o wifi.o cell_data.o modem.o +DEPS = main.o status.o cell_dev.o cell_pdp.o phone.o modem.o wifi.o TARGET = phone all: $(TARGET) diff --git a/fw/fe310/test/cell_data.h b/fw/fe310/test/cell_data.h deleted file mode 100644 index 69ae2ef..0000000 --- a/fw/fe310/test/cell_data.h +++ /dev/null @@ -1,4 +0,0 @@ -void app_cell_data(EVEWindow *window, EVEViewStack *stack); -void app_cell_data_action(EVEForm *form); -void app_cell_data_close(EVEForm *form); -void app_cell_data_init(void);
\ No newline at end of file diff --git a/fw/fe310/test/cell_data.c b/fw/fe310/test/cell_pdp.c index 007fa0b..955b42e 100644 --- a/fw/fe310/test/cell_data.c +++ b/fw/fe310/test/cell_pdp.c @@ -26,17 +26,42 @@ #include <app/root.h> #include "status.h" -#include "cell_data.h" +#include "cell_pdp.h" extern EVEFont *_app_font_default; -static void cell_data_handler(unsigned char type, unsigned char *buffer, uint16_t size) { +static void cell_pdp_connect(char *apn, char *user, char *pass) { + unsigned char *buffer, *p; + + buffer = eos_net_alloc(); + buffer[0] = EOS_CELL_MTYPE_PDP | EOS_CELL_MTYPE_PDP_CONFIG; + p = buffer + 1; + strcpy(p, user); + p += strlen(user) + 1; + strcpy(p, user); + p += strlen(user) + 1; + strcpy(p, pass); + p += strlen(pass) + 1; + eos_net_send(EOS_NET_MTYPE_CELL, buffer, p - buffer, 1); + + buffer = eos_net_alloc(); + buffer[0] = EOS_CELL_MTYPE_PDP | EOS_CELL_MTYPE_PDP_CONNECT; + eos_net_send(EOS_NET_MTYPE_CELL, buffer, 1, 0); +} + +static void cell_pdp_disconnect(void) { + unsigned char *buffer = eos_net_alloc(); + buffer[0] = EOS_CELL_MTYPE_PDP | EOS_CELL_MTYPE_PDP_DISCONNECT; + eos_net_send(EOS_NET_MTYPE_CELL, buffer, 1, 0); +} + +static void cell_pdp_handler(unsigned char type, unsigned char *buffer, uint16_t size) { switch (type) { - case EOS_CELL_MTYPE_DATA_CONNECT: + case EOS_CELL_MTYPE_PDP_CONNECT: app_status_msg_set("Cell data connected", 1); break; - case EOS_CELL_MTYPE_DATA_DISCONNECT: + case EOS_CELL_MTYPE_PDP_DISCONNECT: app_status_msg_set("Cell data disconnected", 1); break; @@ -46,7 +71,7 @@ static void cell_data_handler(unsigned char type, unsigned char *buffer, uint16_ eos_net_free(buffer, 0); } -void app_cell_data(EVEWindow *window, EVEViewStack *stack) { +void app_cell_pdp(EVEWindow *window, EVEViewStack *stack) { APPWidgetSpec spec[] = { { .label.g.w = APP_SCREEN_W / 3, @@ -80,36 +105,21 @@ void app_cell_data(EVEWindow *window, EVEViewStack *stack) { }, }; - EVEForm *form = app_form_create(window, stack, spec, 3, app_cell_data_action, app_cell_data_close); + EVEForm *form = app_form_create(window, stack, spec, 3, app_cell_pdp_action, app_cell_pdp_close); } -void app_cell_data_action(EVEForm *form) { - unsigned char *buf = eos_net_alloc(); - unsigned char *p; +void app_cell_pdp_action(EVEForm *form) { EVEStrWidget *apn = (EVEStrWidget *)eve_form_widget(form, 0); EVEStrWidget *user = (EVEStrWidget *)eve_form_widget(form, 1); EVEStrWidget *pass = (EVEStrWidget *)eve_form_widget(form, 2); - buf[0] = EOS_CELL_MTYPE_DATA | EOS_CELL_MTYPE_DATA_CONFIGURE; - p = buf + 1; - strcpy(p, apn->str); - p += strlen(apn->str) + 1; - strcpy(p, user->str); - p += strlen(user->str) + 1; - strcpy(p, pass->str); - p += strlen(pass->str) + 1; - eos_net_send(EOS_NET_MTYPE_CELL, buf, p - buf, 1); - - eos_net_acquire(); - buf = eos_net_alloc(); - buf[0] = EOS_CELL_MTYPE_DATA | EOS_CELL_MTYPE_DATA_CONNECT; - eos_net_send(EOS_NET_MTYPE_CELL, buf, 1, 0); + cell_pdp_connect(apn->str, user->str, pass->str); } -void app_cell_data_close(EVEForm *form) { +void app_cell_pdp_close(EVEForm *form) { app_form_destroy(form); } -void app_cell_data_init(void) { - eos_cell_set_handler(EOS_CELL_MTYPE_DATA, cell_data_handler); +void app_cell_pdp_init(void) { + eos_cell_set_handler(EOS_CELL_MTYPE_PDP, cell_pdp_handler); } diff --git a/fw/fe310/test/cell_pdp.h b/fw/fe310/test/cell_pdp.h new file mode 100644 index 0000000..3c28176 --- /dev/null +++ b/fw/fe310/test/cell_pdp.h @@ -0,0 +1,4 @@ +void app_cell_pdp(EVEWindow *window, EVEViewStack *stack); +void app_cell_pdp_action(EVEForm *form); +void app_cell_pdp_close(EVEForm *form); +void app_cell_pdp_init(void);
\ No newline at end of file diff --git a/fw/fe310/test/main.c b/fw/fe310/test/main.c index 095746d..6801b97 100644 --- a/fw/fe310/test/main.c +++ b/fw/fe310/test/main.c @@ -26,10 +26,11 @@ #include <app/root.h> #include "status.h" +#include "cell_dev.h" +#include "cell_pdp.h" #include "phone.h" -#include "wifi.h" -#include "cell_data.h" #include "modem.h" +#include "wifi.h" extern EVEFont *_app_font_default; @@ -54,7 +55,7 @@ void app_home_page(EVEWindow *window, EVEViewStack *stack) { .widget.g.w = APP_SCREEN_W, .widget.spec.page.font = _app_font_default, .widget.spec.page.title = "Cellular data", - .widget.spec.page.constructor = app_cell_data + .widget.spec.page.constructor = app_cell_pdp }, { .widget.type = EVE_WIDGET_TYPE_PAGE, @@ -77,7 +78,7 @@ int main() { app_status_init(); app_phone_init(); app_wifi_init(); - app_cell_data_init(); + app_cell_pdp_init(); eos_evtq_loop(); } diff --git a/fw/fe310/test/phone.c b/fw/fe310/test/phone.c index 6f88698..2832fc4 100644 --- a/fw/fe310/test/phone.c +++ b/fw/fe310/test/phone.c @@ -43,19 +43,13 @@ static uint8_t spk_arr[ABUF_SIZE]; static unsigned char voice_state = 0; -static void cell_dev_handler(unsigned char type, unsigned char *buffer, uint16_t len) { - switch (type) { - case EOS_CELL_MTYPE_READY: - app_status_msg_set("Modem ready", 1); - break; +static void handle_mic(unsigned char type) { + uint16_t size; + unsigned char *buf = eos_net_alloc(); - case EOS_CELL_MTYPE_PCM_DATA: - if (voice_state == VOICE_STATE_CIP) { - eos_i2s_spk_write(buffer+1, len-1); - } - break; - } - eos_net_free(buffer, 0); + buf[0] = EOS_CELL_MTYPE_VOICE_PCM; + size = eos_i2s_mic_read(buf+1, MIC_WM); + eos_net_send(EOS_NET_MTYPE_CELL, buf, size+1, 0); } static void cell_voice_handler(unsigned char type, unsigned char *buffer, uint16_t len) { @@ -68,31 +62,31 @@ static void cell_voice_handler(unsigned char type, unsigned char *buffer, uint16 voice_state = VOICE_STATE_RING; sprintf(msg, "RING:%s", buffer+1); break; + case EOS_CELL_MTYPE_VOICE_MISS: voice_state = VOICE_STATE_IDLE; break; + case EOS_CELL_MTYPE_VOICE_BEGIN: voice_state = VOICE_STATE_CIP; eos_i2s_start(8000, EOS_I2S_FMT_PCM16); break; + case EOS_CELL_MTYPE_VOICE_END: voice_state = VOICE_STATE_IDLE; eos_i2s_stop(); break; + + case EOS_CELL_MTYPE_VOICE_PCM: + if (voice_state == VOICE_STATE_CIP) { + eos_i2s_spk_write(buffer+1, len-1); + } + break; } app_status_msg_set(msg, 1); eos_net_free(buffer, 0); } -static void handle_mic(unsigned char type) { - uint16_t size; - unsigned char *buf = eos_net_alloc(); - - buf[0] = EOS_CELL_MTYPE_PCM_DATA; - size = eos_i2s_mic_read(buf+1, MIC_WM); - eos_net_send(EOS_NET_MTYPE_CELL, buf, size+1, 0); -} - void app_phone(EVEWindow *window, EVEViewStack *stack) { char *title = "Phone:"; uint16_t w = eve_font_str_w(_app_font_default, title) + 10; @@ -122,12 +116,11 @@ void app_phone_action(EVEForm *form) { eos_net_send(EOS_NET_MTYPE_CELL, buf, 1 + strlen(w->str), 0); voice_state = VOICE_STATE_DIAL; - sprintf(msg, "DIAL:%s", w->str); + sprintf(msg, "DIAL:%s", w->str); app_status_msg_set(msg, 0); } void app_phone_init(void) { - eos_cell_set_handler(EOS_CELL_MTYPE_DEV, cell_dev_handler); eos_cell_set_handler(EOS_CELL_MTYPE_VOICE, cell_voice_handler); eos_i2s_mic_init(mic_arr, ABUF_SIZE); diff --git a/fw/fe310/test/wifi.c b/fw/fe310/test/wifi.c index 595a87c..86f6b62 100644 --- a/fw/fe310/test/wifi.c +++ b/fw/fe310/test/wifi.c @@ -30,6 +30,35 @@ extern EVEFont *_app_font_default; +static void wifi_scan(void) { + unsigned char *buffer = eos_net_alloc(); + buffer[0] = EOS_WIFI_MTYPE_SCAN; + eos_net_send(EOS_NET_MTYPE_WIFI, buffer, 1, 0); +} + +static void wifi_connect(const char *ssid, const char *pass) { + unsigned char *buffer, *p; + + buffer = eos_net_alloc(); + buffer[0] = EOS_WIFI_MTYPE_CONFIG; + p = buffer + 1; + strcpy(p, ssid); + p += strlen(ssid) + 1; + strcpy(p, pass); + p += strlen(pass) + 1; + eos_net_send(EOS_NET_MTYPE_WIFI, buffer, p - buffer, 1); + + buffer = eos_net_alloc(); + buffer[0] = EOS_WIFI_MTYPE_CONNECT; + eos_net_send(EOS_NET_MTYPE_WIFI, buffer, 1, 0); +} + +static void wifi_disconnect(void) { + unsigned char *buffer = eos_net_alloc(); + buffer[0] = EOS_WIFI_MTYPE_DISCONNECT; + eos_net_send(EOS_NET_MTYPE_WIFI, buffer, 1, 0); +} + void wifi_scan_handler(unsigned char type, unsigned char *buffer, uint16_t size) { EVEScreen *screen = app_screen(); EVEWindow *window = eve_window_get(screen, "main"); @@ -86,7 +115,7 @@ void app_wifi(EVEWindow *window, EVEViewStack *stack) { }; EVEForm *form = app_form_create(window, stack, spec, 3, app_wifi_action, app_wifi_close); - eos_wifi_scan(); + wifi_scan(); } void app_wifi_action(EVEForm *form) { @@ -94,7 +123,7 @@ void app_wifi_action(EVEForm *form) { EVEStrWidget *str = (EVEStrWidget *)eve_form_widget(form, 2); char *ssid = eve_selectw_option_get_select(sel); - eos_wifi_connect(ssid, str->str); + if (ssid) wifi_connect(ssid, str->str); } void app_wifi_close(EVEForm *form) { |