|
|
@@ -3,6 +3,8 @@
|
|
|
#include "luat_airlink.h"
|
|
|
|
|
|
#include "luat_rtos.h"
|
|
|
+#include "luat_mobile.h"
|
|
|
+#include "luat_network_adapter.h"
|
|
|
#include "luat_debug.h"
|
|
|
#include "luat_spi.h"
|
|
|
#include "luat_pm.h"
|
|
|
@@ -123,8 +125,7 @@ static void slave_irq_mode_startup(airlink_link_data_t* link) {
|
|
|
// is_irq_mode = 1;
|
|
|
}
|
|
|
|
|
|
-static void spi_gpio_setup(void)
|
|
|
-{
|
|
|
+static void spi_gpio_setup(void) {
|
|
|
// LLOGD("spi_gpio_setup");
|
|
|
// LLOGD("g_airlink_spi_conf %p", &g_airlink_spi_conf);
|
|
|
// int ret = 0;
|
|
|
@@ -189,7 +190,232 @@ static void spi_gpio_setup(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static uint32_t sta_ap_info_update_tm;
|
|
|
+extern luat_airlink_mobile_evt_cb g_airlink_mobile_evt_cb;
|
|
|
+static int mobile_evt_handler(LUAT_MOBILE_EVENT_E event, uint8_t index, uint8_t status, void* ptr) {
|
|
|
+ // luat_airlink_cmd_t *cmd = (luat_airlink_cmd_t *)basic_info;
|
|
|
+ luat_airlink_dev_info_t *devinfo = self_devinfo();
|
|
|
+ // LLOGD("mobile_evt_handler event:%d, index:%d, status:%d", event, index, status);
|
|
|
+ switch(event)
|
|
|
+ {
|
|
|
+ case LUAT_MOBILE_EVENT_CFUN:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_EVENT_SIM:
|
|
|
+/*
|
|
|
+@sys_pub mobile
|
|
|
+sim卡状态变化
|
|
|
+SIM_IND
|
|
|
+@usage
|
|
|
+sys.subscribe("SIM_IND", function(status, value)
|
|
|
+ -- status的取值有:
|
|
|
+ -- RDY SIM卡就绪, value为nil
|
|
|
+ -- NORDY 无SIM卡, value为nil
|
|
|
+ -- SIM_PIN 需要输入PIN, value为nil
|
|
|
+ -- GET_NUMBER 获取到电话号码(不一定有值), value为nil
|
|
|
+ -- SIM_WC SIM卡的写入次数统计,掉电归0, value为统计值
|
|
|
+ log.info("sim status", status, value)
|
|
|
+end)
|
|
|
+*/
|
|
|
+ LLOGD("SIM_IND -> status %d", status);
|
|
|
+ devinfo->cat1.sim_state = status;
|
|
|
+ switch (status)
|
|
|
+ {
|
|
|
+ case LUAT_MOBILE_SIM_READY:
|
|
|
+ luat_mobile_get_iccid(0, (char*)devinfo->cat1.iccid, 20);
|
|
|
+ luat_mobile_get_imsi(0, (char*)devinfo->cat1.imsi, 16);
|
|
|
+ LLOGD("SIM_READY -> ICCID %s", devinfo->cat1.iccid);
|
|
|
+ LLOGD("SIM_READY -> IMSI %s", devinfo->cat1.imsi);
|
|
|
+ send_devinfo_update_evt();
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_NO_SIM:
|
|
|
+ memset(devinfo->cat1.iccid, 0, 20);
|
|
|
+ memset(devinfo->cat1.imsi, 0, 16);
|
|
|
+ send_devinfo_update_evt();
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_SIM_NEED_PIN:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_SIM_NUMBER:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_SIM_WC:
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_EVENT_REGISTER_STATUS:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_EVENT_CELL_INFO:
|
|
|
+ switch (status)
|
|
|
+ {
|
|
|
+ case LUAT_MOBILE_CELL_INFO_UPDATE:
|
|
|
+/*
|
|
|
+@sys_pub mobile
|
|
|
+基站数据已更新
|
|
|
+CELL_INFO_UPDATE
|
|
|
+@usage
|
|
|
+-- 订阅式
|
|
|
+sys.subscribe("CELL_INFO_UPDATE", function()
|
|
|
+ log.info("cell", json.encode(mobile.getCellInfo()))
|
|
|
+end)
|
|
|
+*/
|
|
|
+
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_SERVICE_CELL_UPDATE:
|
|
|
+/*
|
|
|
+@sys_pub mobile
|
|
|
+服务小区额外信息更新
|
|
|
+SCELL_INFO
|
|
|
+@usage
|
|
|
+-- 订阅式
|
|
|
+sys.subscribe("SCELL_INFO", function()
|
|
|
+ log.info("service cell", mobile.scell()))
|
|
|
+end)
|
|
|
+*/
|
|
|
+
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_EVENT_PDP:
|
|
|
+ LLOGD("cid%d, state%d", index, status);
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_EVENT_NETIF:
|
|
|
+ switch (status)
|
|
|
+ {
|
|
|
+ case LUAT_MOBILE_NETIF_LINK_ON: {
|
|
|
+ devinfo->cat1.cat_state = 1;
|
|
|
+ send_devinfo_update_evt();
|
|
|
+ LLOGD("NETIF_LINK_ON -> IP_READY cat1.cat_state %d ipv4 %d.%d.%d.%d", devinfo->cat1.cat_state, devinfo->cat1.ipv4[0], devinfo->cat1.ipv4[1], devinfo->cat1.ipv4[2], devinfo->cat1.ipv4[3]);
|
|
|
+/*
|
|
|
+@sys_pub mobile
|
|
|
+已联网
|
|
|
+IP_READY
|
|
|
+@usage
|
|
|
+-- 联网后会发一次这个消息
|
|
|
+sys.subscribe("IP_READY", function(ip, adapter)
|
|
|
+ log.info("mobile", "IP_READY", ip, (adapter or -1) == socket.LWIP_GP)
|
|
|
+end)
|
|
|
+*/
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case LUAT_MOBILE_NETIF_LINK_OFF:
|
|
|
+ devinfo->cat1.cat_state = 0;
|
|
|
+ send_devinfo_update_evt();
|
|
|
+ LLOGD("NETIF_LINK_OFF -> IP_LOSE cat1.cat_state %d", devinfo->cat1.cat_state);
|
|
|
+/*
|
|
|
+@sys_pub mobile
|
|
|
+已断网
|
|
|
+IP_LOSE
|
|
|
+@usage
|
|
|
+-- 断网后会发一次这个消息
|
|
|
+sys.subscribe("IP_LOSE", function(adapter)
|
|
|
+ log.info("mobile", "IP_LOSE", (adapter or -1) == socket.LWIP_GP)
|
|
|
+end)
|
|
|
+*/
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_EVENT_TIME_SYNC:
|
|
|
+/*
|
|
|
+@sys_pub mobile
|
|
|
+时间已经同步
|
|
|
+NTP_UPDATE
|
|
|
+@usage
|
|
|
+-- 对于电信/移动的卡, 联网后,基站会下发时间,但联通卡不会,务必留意
|
|
|
+sys.subscribe("NTP_UPDATE", function()
|
|
|
+ log.info("mobile", "time", os.date())
|
|
|
+end)
|
|
|
+*/
|
|
|
+
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_EVENT_CSCON:
|
|
|
+// LLOGD("CSCON %d", status);
|
|
|
+/*
|
|
|
+@sys_pub mobile
|
|
|
+RRC状态
|
|
|
+CSCON
|
|
|
+@usage
|
|
|
+-- state 1 CONNECT 0 IDLE
|
|
|
+sys.subscribe("CSCON", function(state)
|
|
|
+ log.info("mobile", "CSCON", state)
|
|
|
+end)
|
|
|
+*/
|
|
|
+
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_EVENT_BEARER:
|
|
|
+ LLOGD("bearer act %d, result %d",status, index);
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_EVENT_SMS:
|
|
|
+ switch(status)
|
|
|
+ {
|
|
|
+ case LUAT_MOBILE_SMS_READY:
|
|
|
+ LLOGI("sim%d sms ready", index);
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_NEW_SMS:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_SMS_SEND_DONE:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_SMS_ACK:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_EVENT_IMS_REGISTER_STATUS:
|
|
|
+ LLOGD("ims reg state %d", status);
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_EVENT_CC:
|
|
|
+ LLOGD("LUAT_MOBILE_EVENT_CC status %d",status);
|
|
|
+/*
|
|
|
+@sys_pub mobile
|
|
|
+通话状态变化
|
|
|
+CC_IND
|
|
|
+@usage
|
|
|
+sys.subscribe("CC_IND", function(status, value)
|
|
|
+ log.info("cc status", status, value)
|
|
|
+end)
|
|
|
+*/
|
|
|
+ switch(status){
|
|
|
+ case LUAT_MOBILE_CC_READY:
|
|
|
+ LLOGD("LUAT_MOBILE_CC_READY");
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_CC_INCOMINGCALL:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_CC_CALL_NUMBER:
|
|
|
+ // lua_pushstring(L, "CC_IND");
|
|
|
+ // lua_pushstring(L, "CALL_NUMBER");
|
|
|
+ // lua_call(L, 2, 0);
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_CC_CONNECTED_NUMBER:
|
|
|
+ // lua_pushstring(L, "CC_IND");
|
|
|
+ // lua_pushstring(L, "CONNECTED_NUMBER");
|
|
|
+ // lua_call(L, 2, 0);
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_CC_CONNECTED:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_CC_DISCONNECTED:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_CC_SPEECH_START:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_CC_MAKE_CALL_OK:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_CC_MAKE_CALL_FAILED:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_CC_ANSWER_CALL_DONE:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_CC_HANGUP_CALL_DONE:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_CC_LIST_CALL_RESULT:
|
|
|
+ break;
|
|
|
+ case LUAT_MOBILE_CC_PLAY:// 最先
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ send_devinfo_update_evt();
|
|
|
+ return 0;
|
|
|
+}
|
|
|
|
|
|
__USER_FUNC_IN_RAM__ static void start_spi_trans(void) {
|
|
|
// 首先, 把rxbuff填0, 不要收到老数据的干扰
|
|
|
@@ -230,15 +456,16 @@ __USER_FUNC_IN_RAM__ static void spi_slave_task(void *param)
|
|
|
|
|
|
luat_airlink_dev_info_t *devinfo = self_devinfo();
|
|
|
devinfo->tp = 0x02;
|
|
|
- // uint32_t fw_version = 3;
|
|
|
- // memcpy(devinfo->cat1.version, &fw_version, sizeof(uint32_t));
|
|
|
-
|
|
|
- // luat_mobile_event_register_handler(cat1_evt_handler);
|
|
|
+ uint32_t fw_version = 3;
|
|
|
+ memcpy(devinfo->cat1.version, &fw_version, sizeof(uint32_t)); // 版本
|
|
|
+ luat_mobile_get_sn(devinfo->cat1.unique_id, 32); // 唯一ID
|
|
|
+ luat_mobile_get_imei(0, devinfo->cat1.imei, 16); // IMEI
|
|
|
|
|
|
|
|
|
// // 执行主循环
|
|
|
g_airlink_link_data_cb = link_data_cb;
|
|
|
g_airlink_newdata_notify_cb = on_newdata_notify;
|
|
|
+ g_airlink_mobile_evt_cb = mobile_evt_handler;
|
|
|
|
|
|
// 告知已经就绪
|
|
|
self_ready = 1;
|