#include "alipay_app.h"\r
#endif\r
\r
+#define IF_SUPPORT_LWIP 0\r
+\r
+#if IF_SUPPORT_LWIP\r
+#include "lwip/dns.h"\r
+#include "lwip/inet.h"\r
+#include "api_shell.h"\r
+#include <string.h>\r
+#include <lwip/sockets.h>\r
+#endif\r
+\r
void alipay_iot_gettimeofday(alipay_iot_timeval *now)\r
{\r
now->tv_sec = time(NULL);\r
ret = msg_center_alipay_hostent_request((void*)name, strlen(name));\r
ret |= msg_center_alipay_hostent_reponse(ip);\r
return ret;\r
+ #if IF_SUPPORT_LWIP\r
+ printf("alipay_iot_dns name:%s\n",name);// 发起 DNS 解析请求\r
+ unsigned int ipaddr = get_hostip(name);\r
+ if (ipaddr == 0) {\r
+ printf("dns_gethostbyname request %s ipaddr fail\n", name);\r
+ return -1;\r
+ }\r
+ printf("%s %d ipaddr 0x%x\n",__func__,__LINE__,ipaddr);\r
+ // 将 ipaddr 按字节拆分并存储到 ip 数组中\r
+ ip[0] = (ipaddr >> 24) & 0xFF;\r
+ ip[1] = (ipaddr >> 16) & 0xFF;\r
+ ip[2] = (ipaddr >> 8) & 0xFF;\r
+ ip[3] = ipaddr & 0xFF;\r
+ printf("alipay_iot_dns ip:%d.%d.%d.%d\n",ip[0],ip[1],ip[2],ip[3]);\r
+ return 0;\r
+ #endif\r
}\r
\r
int alipay_iot_socket_create(int domain, alipay_socket_type_enum type, int protocol)\r
}\r
int fd = DEFAULT_SOCKET_FD;\r
return fd;\r
+ #if IF_SUPPORT_LWIP\r
+ // 创建套接字\r
+ int fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);\r
+ if (fd < 0) {\r
+ printf("socket create fail\n");\r
+ return;\r
+ }\r
+ return fd;\r
+ #endif\r
}\r
\r
int alipay_iot_socket_connect(int s, const struct alipay_iot_sockaddr *name,\r
ret = msg_center_alipay_connect_request(&request, sizeof(alipay_connect_request));\r
ret |= msg_center_alipay_connect_reponse();\r
return ret;\r
+ #if IF_SUPPORT_LWIP\r
+ struct sockaddr_in server_addr;\r
+ int ret;\r
+ // 检查网络状态,这里可以根据 lwIP 的网络接口状态来判断\r
+ // if (!netif_is_up(&g_mynetif)) {\r
+ // return -1;\r
+ // }\r
+ // 填充服务器地址结构体\r
+ memset(&server_addr, 0, sizeof(server_addr));\r
+ server_addr.sin_family = AF_INET;\r
+ server_addr.sin_port = name->data.sin_data.port;\r
+ memcpy(&server_addr.sin_addr.s_addr, name->data.sin_data.ip, 4);\r
+ // 发起连接请求\r
+ ret = connect(s, (struct sockaddr *)&server_addr, sizeof(server_addr));\r
+ if (ret < 0) {\r
+ // 连接失败,可以根据具体情况添加错误处理逻辑\r
+ // 例如记录日志等\r
+ printf("connect fail\n");\r
+ close(s);\r
+ return -1;\r
+ }\r
+ return ret;\r
+ #endif\r
}\r
\r
int alipay_iot_socket_write(int s, const void *dataptr, int len)\r
}\r
ret = msg_center_alipay_tcpdata_request((void *)dataptr, len);\r
return ret;\r
+ #if IF_SUPPORT_LWIP\r
+ ret = send(s, dataptr, len, 0);//调用 lwIP 的 send 函数发送数据\r
+ if (ret < 0) {\r
+ // 发送失败,可以根据具体情况添加错误处理逻辑\r
+ // 例如记录日志等\r
+ return -1;\r
+ }\r
+ return ret;\r
+ #endif\r
}\r
\r
int alipay_iot_fd_isset(int fd, alipay_iot_fd_set* fdset)\r
}\r
ret = msg_center_alipay_tcpdata_read(mem, len);\r
return ret;\r
+ #if IF_SUPPORT_LWIP\r
+ ret = recv(s, mem, len, 0);// 调用 lwIP 的 recv 函数接收数据\r
+ if (ret < 0) {\r
+ return -1;\r
+ }\r
+ return ret;\r
+ #endif\r
}\r
\r
int alipay_iot_socket_close(int s)\r
int ret;\r
ret = msg_center_alipay_close_request();\r
return ret;\r
+ #if IF_SUPPORT_LWIP\r
+ ret = close(s);\r
+ if (ret < 0) {\r
+ // 关闭失败\r
+ return -1;\r
+ }\r
+ return ret;\r
+ #endif\r
}\r
#else\r
int alipay_iot_dns(const char *name, unsigned char ip[4])\r
static const uint8_t alipay_adv_type[ALIPAY_BLE_ADV_TYPE_LENTH] = {2, 1, 2};\r
static const uint8_t alipay_adv_uuid[ALIPAY_BLE_ADV_UUID_LENTH] = {0x3, 0x3, 0x02, 0x38};\r
\r
+#define ALIPAY_PRINT_LOG 0\r
+\r
static bool svr_alipay_get_adv_start_state(void)\r
{\r
return g_alipay_adv_start_state;\r
}\r
}\r
\r
+//在服务添加成功后添加特征\r
static void svr_alipay_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
errcode_t status)\r
{\r
unused(status);\r
- if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_SERVICE_ID)) {\r
+ // 检查UUID是否匹配支付宝服务ID\r
+ if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_SERVICE_ID)) \r
+ {\r
+ // 打印服务添加回调的调试信息\r
ALIPAY_PRINT_DEBUG(0, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x 0x%x",\r
status, server_id, srv_handle, *((uint16_t *)uuid->uuid));\r
- uint16_t id = ALIPAYY_CHARACTERISTIC_ID;\r
- gatts_add_chara_info_t character;\r
+ uint16_t id = ALIPAYY_CHARACTERISTIC_ID;// 支付宝特征值ID\r
+ gatts_add_chara_info_t character;// 特征值信息结构体\r
uint16_t value = 0;\r
\r
+ // 初始化特征值信息结构体\r
memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t));\r
- character.chara_uuid.uuid_len = sizeof(id);\r
+ character.chara_uuid.uuid_len = sizeof(id); // 设置特征值UUID长度\r
memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&id, sizeof(id));\r
character.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
character.properties =\r
GATT_CHARACTER_PROPERTY_BIT_READ | GATT_CHARACTER_PROPERTY_BIT_WRITE | GATT_CHARACTER_PROPERTY_BIT_NOTIFY;\r
- character.value_len = ALIPAY_CHARACTERISTIC_MAX_LENGTH;\r
- character.value = g_alipay_character_buf;\r
+ character.value_len = ALIPAY_CHARACTERISTIC_MAX_LENGTH; // 设置特征值最大长度\r
+ character.value = g_alipay_character_buf; // 设置特征值缓冲区\r
\r
+ // 添加特征值到服务\r
int ret = gatts_add_characteristic(server_id, srv_handle, &character);\r
if (ret != ERRCODE_SUCC) {\r
ALIPAY_PRINT_ERR(0, "gatts_add_characteristic fail, ret:%u.\r\n", ret);\r
}\r
- g_alipay_svr_handle = srv_handle;\r
+ g_alipay_svr_handle = srv_handle;// 保存服务句柄\r
}\r
}\r
\r
-/* 将uint16的uuid数字转化为bt_uuid_t */\r
-static void bts_data_to_uuid_len2(uint16_t uuid_data, bt_uuid_t *out_uuid)\r
-{\r
- out_uuid->uuid_len = UUID16_LEN;\r
- out_uuid->uuid[0] = (uint8_t)(uuid_data >> 8); /* 8: octet bit num */\r
- out_uuid->uuid[1] = (uint8_t)(uuid_data);\r
-}\r
-\r
+//在特征添加成功后添加描述符。\r
static void svr_alipay_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
gatts_add_character_result_t *result, errcode_t status)\r
{\r
- unused(status);\r
- if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_CHARACTERISTIC_ID)) {\r
+ if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_CHARACTERISTIC_ID))\r
+ {\r
ALIPAY_PRINT_DEBUG(0, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x 0x%x 0x%x",\r
status, server_id, srv_handle, result->handle, result->value_handle);\r
uint8_t bas_ccc_val[] = {\r
0x00\r
};\r
bt_uuid_t ccc_uuid = { 0 };\r
- bts_data_to_uuid_len2(0x2902, &ccc_uuid);\r
- gatts_add_desc_info_t descriptor;\r
- descriptor.desc_uuid = ccc_uuid;\r
- descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
- descriptor.value_len = (uint16_t)sizeof(bas_ccc_val);\r
+ bts_data_to_uuid_len2(0x2902, &ccc_uuid); // 将0x2902转换为UUID格式\r
+ gatts_add_desc_info_t descriptor; \r
+ descriptor.desc_uuid = ccc_uuid; //设置描述符UUID\r
+ descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE; // 设置描述符权限\r
+ descriptor.value_len = (uint16_t)sizeof(bas_ccc_val); // 设置描述符值长度\r
descriptor.value = bas_ccc_val;\r
int ret = 0;\r
ret = gatts_add_descriptor(server_id, srv_handle, &descriptor);\r
if (ret != ERRCODE_SUCC) {\r
ALIPAY_PRINT_ERR(0, "gatts_add_descriptor fail, ret:%u.\r\n", ret);\r
}\r
+ // 获取本地蓝牙地址\r
bd_addr_t addr_info;\r
gatts_add_desc_info_t descriptor_ap;\r
gap_ble_get_local_addr(&addr_info);\r
- bts_data_to_uuid_len2(0x4b02, &ccc_uuid);\r
- descriptor_ap.desc_uuid = ccc_uuid;\r
- descriptor_ap.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
- descriptor_ap.value_len = BD_ADDR_LEN;\r
+ bts_data_to_uuid_len2(0x4b02, &ccc_uuid); // 将0x4b02转换为UUID格式\r
+ descriptor_ap.desc_uuid = ccc_uuid; // 设置描述符UUID\r
+ descriptor_ap.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE; // 设置描述符权限\r
+ descriptor_ap.value_len = BD_ADDR_LEN; // 设置描述符值长度\r
uint8_t ble_data_mac_switch[BD_ADDR_LEN] = {0};\r
int k = BD_ADDR_LEN;\r
for (int i = 0; i < BD_ADDR_LEN; i++) {\r
- ble_data_mac_switch[--k] = addr_info.addr[i];\r
+ ble_data_mac_switch[--k] = addr_info.addr[i]; // 反转蓝牙地址字节顺序\r
}\r
- descriptor_ap.value = ble_data_mac_switch;\r
+\r
+ // 添加第二个描述符到特征值\r
+ descriptor_ap.value = ble_data_mac_switch; // 设置描述符值为蓝牙地址\r
ret = gatts_add_descriptor(server_id, srv_handle, &descriptor_ap);\r
if (ret != ERRCODE_SUCC) {\r
ALIPAY_PRINT_ERR(0, "gatts_add_descriptor second fail, ret:%u.\r\n", ret);\r
}\r
+ // 启动服务\r
ret = gatts_start_service(server_id, srv_handle);\r
if (ret != ERRCODE_SUCC) {\r
ALIPAY_PRINT_ERR(0, "gatts_start_service fail, ret:%u.\r\n", ret);\r
}\r
+ // 保存特征值句柄\r
g_alipay_characteristic_handle = result->value_handle;\r
}\r
}\r
static void svr_alipay_bt_gatts_descriptor_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
uint16_t desc_handle, errcode_t status)\r
{\r
- unused(server_id);\r
- unused(uuid);\r
- unused(status);\r
if (g_alipay_svr_handle == srv_handle) {\r
ALIPAY_PRINT_DEBUG(0, "BtGattsDescriptorAddCallback 0x%x 0x%x 0x%x 0x%x", status, server_id, srv_handle,\r
desc_handle);\r
\r
static void svr_alipay_bt_gatts_service_start_cb(uint8_t server_id, uint16_t srv_handle, errcode_t status)\r
{\r
- unused(server_id);\r
- unused(status);\r
if (g_alipay_svr_handle == srv_handle) {\r
ALIPAY_PRINT_DEBUG(0, "BtGattsServiceStartCallback 0x%x 0x%x 0x%x", status, server_id, srv_handle);\r
}\r
\r
static void svr_alipay_bt_gatts_service_stop_cb(uint8_t server_id, uint16_t srv_handle, errcode_t status)\r
{\r
- unused(server_id);\r
- unused(srv_handle);\r
- unused(status);\r
ALIPAY_PRINT_DEBUG(0, "BtGattsServiceStopCallback 0x%x 0x%x 0x%x", status, server_id, srv_handle);\r
}\r
\r
static void svr_alipay_bt_gatts_service_del_cb(uint8_t server_id, errcode_t status)\r
{\r
- unused(server_id);\r
- unused(status);\r
ALIPAY_PRINT_DEBUG(0, "BtGattsServiceDeleteCallback 0x%x 0x%x", status, server_id);\r
}\r
\r
static void svr_alipay_bt_gatts_req_read_cb(uint8_t server_id, uint16_t conn_id, gatts_req_read_cb_t *read_cb_para,\r
errcode_t status)\r
{\r
- unused(server_id);\r
- unused(conn_id);\r
- unused(read_cb_para);\r
- unused(status);\r
ALIPAY_PRINT_DEBUG(0, "BtGattsRequestReadCallback");\r
}\r
\r
+bool is_alipay_handle(uint16_t hande)\r
+{\r
+ if ((g_alipay_characteristic_handle == hande) ||\r
+ (g_alipay_descriptor_handle[0] == hande) ||\r
+ (g_alipay_descriptor_handle[1] == hande)) \r
+ {\r
+ return true;\r
+ }\r
+ return false;\r
+}\r
+// 接收手机数据\r
static void svr_alipay_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id, gatts_req_write_cb_t *write_cb_para,\r
errcode_t status)\r
{\r
- unused(server_id);\r
- unused(conn_id);\r
- unused(status);\r
+ // 检查写入的句柄是否匹配支付宝特征值或描述符的句柄\r
if ((g_alipay_characteristic_handle == write_cb_para->handle) ||\r
(g_alipay_descriptor_handle[0] == write_cb_para->handle) ||\r
(g_alipay_descriptor_handle[1] == write_cb_para->handle)) {\r
ALIPAY_PRINT_DEBUG(0, "write callback,handle:%u str:%s len:%u",\r
write_cb_para->handle, write_cb_para->value, write_cb_para->length);\r
- uint8_t *msg_data = write_cb_para->value;\r
+ uint8_t *msg_data = write_cb_para->value; \r
+ // 将数据写入支付宝消息队列\r
errcode_t ret = svr_alipay_msg_write(ALIPAY_MSG_BT, msg_data, write_cb_para->length, false);\r
if (ret != ERRCODE_SUCC) {\r
ALIPAY_PRINT_ERR(0, "svr_alipay_msg_write fail, ret:%u.\r\n", ret);\r
return;\r
}\r
\r
+//发送数据到手机\r
void svr_alipay_bt_gatts_noyify(uint8_t *data, uint16_t data_len)\r
{\r
gatts_ntf_ind_t data_info;\r
data_info.value = data;\r
data_info.value_len = data_len;\r
\r
+ #if ALIPAY_PRINT_LOG\r
+ // 打印 data 数据\r
+ printf("发送数据到手机: ");\r
+ for (uint16_t i = 0; i < data_len; i++) {\r
+ printf("%02x ", data[i]);\r
+ }\r
+ printf("数据长度:%d",data_len);\r
+ printf("\n");\r
+ #endif\r
+\r
errcode_t ret = gatts_notify_indicate(g_alipay_server_id, g_alipay_conn_id, &data_info);\r
ALIPAY_PRINT_DEBUG(0, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.", ret, g_alipay_server_id,\r
g_alipay_conn_id, g_alipay_characteristic_handle);\r
#endif\r
}\r
\r
-static void svr_alipay_bt_init_gatts(void)\r
+void ble_add_alipay_service(uint8_t server_id)\r
+{\r
+ printf("ble_add_alipay_service\r\n");\r
+ bt_uuid_t alipay_service_uuid = {0};\r
+ bts_data_to_uuid_len2(ALIPAYY_SERVICE_ID, &alipay_service_uuid);\r
+ //只有一个服务,永远是1\r
+ errcode_t ret = 0;\r
+#ifndef SUPPORT_OHOSFWK\r
+ ret = gatts_add_service(server_id, &alipay_service_uuid, true);\r
+ printf(" NO SUPPORT_OHOSFWK\r\n");\r
+ #else\r
+ ret = wrapper_gatts_add_service(server_id, &alipay_service_uuid, true);\r
+ printf("ble_add_alipay_service wrapper_gatts_add_service ret: 0x%x serverId = 0x%x uuid.uuid_len:%d\n", ret, server_id,alipay_service_uuid.uuid_len);\r
+#endif\r
+ g_alipay_server_id=server_id;\r
+}\r
+\r
+\r
+void svr_alipay_bt_init_gatts(uint8_t server_id )\r
{\r
uint16_t service_id = ALIPAYY_SERVICE_ID;\r
- uint8_t server_id = 0;\r
+ //uint8_t server_id = 0;\r
bt_uuid_t uuid;\r
int ret;\r
\r
uuid.uuid_len = sizeof(service_id);\r
memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&service_id, sizeof(service_id));\r
-#ifndef SUPPORT_OHOSFWK\r
- ret = gatts_register_server(&uuid, &server_id); /* 注册gatt server */\r
-#else\r
- ret = wrapper_gatts_register_server(&uuid, &server_id); /* 注册gatt server */\r
-#endif\r
- if (ret != ERRCODE_SUCC) {\r
- ALIPAY_PRINT_ERR(0, "gatts_register_server ret:%u.\r\n", ret);\r
- }\r
+// #ifndef SUPPORT_OHOSFWK\r
+// ret = gatts_register_server(&uuid, &server_id); /* 注册gatt server */\r
+// if (ret != ERRCODE_SUCC) {\r
+// ALIPAY_PRINT_ERR(0, "gatts_register_server ret:0x%x.\r\n", ret);\r
+// }\r
+// #else\r
+// ret = wrapper_gatts_register_server(&uuid, &server_id); /* 注册gatt server */\r
+// if (ret != ERRCODE_SUCC) {\r
+// ALIPAY_PRINT_ERR(0, "wrapper_gatts_register_server ret:0x%x.\r\n", ret);\r
+// }\r
+// #endif\r
+ \r
ALIPAY_PRINT_DEBUG(0, "gatts_register_server ret: 0x%x server_id = 0x%x", ret, server_id);\r
g_alipay_server_id = server_id;\r
uuid.uuid_len = sizeof(service_id);\r
memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&service_id, sizeof(service_id));\r
+\r
#ifndef SUPPORT_OHOSFWK\r
ret = gatts_add_service(server_id, &uuid, true);\r
+ if (ret != ERRCODE_SUCC) {\r
+ ALIPAY_PRINT_ERR(0, "gatts_add_service ret:0x%x.\r\n", ret);\r
+ }\r
#else\r
ret = wrapper_gatts_add_service(server_id, &uuid, true);\r
-#endif\r
if (ret != ERRCODE_SUCC) {\r
- ALIPAY_PRINT_ERR(0, "gatts_add_service ret:%u.\r\n", ret);\r
+ ALIPAY_PRINT_ERR(0, "wrapper_gatts_add_service ret:0x%x.\r\n", ret);\r
}\r
+#endif\r
+ \r
return;\r
}\r
\r
-void svr_alipay_bluetooth_init(void)\r
+//2.Alipay蓝牙模块初始化\r
+void svr_alipay_bluetooth_init(uint8_t server_id)\r
{\r
-#ifndef SUPPORT_OHOSFWK\r
- bool ret = enable_bt_stack();\r
- if (ret != ERRCODE_SUCC) {\r
- ALIPAY_PRINT_ERR(0, "enable_bt_stack ret:%u.\r\n", ret);\r
- }\r
-#endif\r
+// #ifndef SUPPORT_OHOSFWK\r
+// bool ret = enable_bt_stack();\r
+// if (ret != ERRCODE_SUCC) {\r
+// ALIPAY_PRINT_ERR(0, "enable_bt_stack ret:%u.\r\n", ret);\r
+// }\r
+// #endif\r
if (g_alipay_ble_init_flag == true) {\r
return;\r
}\r
+ printf("svr_alipay_bluetooth_init \r\n");\r
svr_alipay_btcallback_reg();\r
- svr_alipay_bt_init_gatts();\r
+ svr_alipay_bt_init_gatts(server_id);\r
+ \r
g_alipay_ble_init_flag = true;\r
return;\r
}\r
#define APP_FAILURE (-1)
#if !defined(SW_UART_DEBUG) && !defined(SW_RTT_DEBUG)
+#ifdef WEARABLE_LOG_DEBUG
+#define ALIPAY_PRINT_DEBUG(log_num, fmt, arg...) uapi_diag_debug_log(0, fmt, ##arg)
#define ALIPAY_PRINT_ERR(log_num, fmt, arg...) uapi_diag_error_log(0, fmt, ##arg)
#define ALIPAY_PRINT_WARN(log_num, fmt, arg...) uapi_diag_warning_log(0, fmt, ##arg)
#define ALIPAY_PRINT_INFO(log_num, fmt, arg...) uapi_diag_info_log(0, fmt, ##arg)
-#ifdef WEARABLE_LOG_DEBUG
-#define ALIPAY_PRINT_DEBUG(log_num, fmt, arg...) uapi_diag_debug_log(0, fmt, ##arg)
#else
#define ALIPAY_PRINT_DEBUG(log_num, fmt, arg...)
+#define ALIPAY_PRINT_ERR(log_num, fmt, arg...)
+#define ALIPAY_PRINT_WARN(log_num, fmt, arg...)
+#define ALIPAY_PRINT_INFO(log_num, fmt, arg...)
#endif
#else
#define ALIPAY_PRINT_ERR(log_num, fmt, arg...) PRINT("[ALIPAY SVR E/] %s: " fmt "\r\n", __FUNCTION__, ##arg)
typedef enum {
ALIPAY_TRANS_SUCCESS = 0,
ALIPAY_TRANS_CARD_LIST_START = ALIPAY_TRANS_CARD_SHIFT << 8,
- ALIPAY_TRANS_CARD_LIST_UNBIND = ALIPAY_TRANS_CARD_LIST_START, // 设备已经在服务端解绑,设备端也需要调用解绑接口
- ALIPAY_TRANS_CARD_LIST_NET_ERROR, // 网络错误
- ALIPAY_TRANS_CARD_LIST_OWN_TOO_MANY_CARD, // 用户开通了太多乘车码
- ALIPAY_TRANS_CARD_LIST_FUNC_NOT_SUPPPORT, // 不支持该功能
- ALIPAY_TRANS_CARD_LIST_DEV_ERROR, // 不该出现的错误
- ALIPAY_TRANS_CARD_LIST_BUF_TOO_SHORT, // 入参的缓存太小
+ ALIPAY_TRANS_CARD_LIST_UNBIND = ALIPAY_TRANS_CARD_LIST_START, // 设备已经在服务端解绑,设备端也需要调用解绑接口
+ ALIPAY_TRANS_CARD_LIST_NET_ERROR, // 网络错误
+ ALIPAY_TRANS_CARD_LIST_OWN_TOO_MANY_CARD, // 用户开通了太多乘车码
+ ALIPAY_TRANS_CARD_LIST_FUNC_NOT_SUPPPORT, // 不支持该功能
+ ALIPAY_TRANS_CARD_LIST_DEV_ERROR, // 不该出现的错误
+ ALIPAY_TRANS_CARD_LIST_BUF_TOO_SHORT, // 入参的缓存太小
ALIPAY_TRANS_CODE_START = ALIPAY_TRANS_CODE_SHIFT << 8,
- ALIPAY_TRANS_CODE_UNBIND = ALIPAY_TRANS_CODE_START, // 设备已经在服务端解绑,设备端也需要调用解绑接口
- ALIPAY_TRANS_CODE_NET_ERROR, // 网络错误
- ALIPAY_TRANS_CODE_DATA_LIMIT, // 因安全原因限制生码
- ALIPAY_TRANS_CODE_NOT_SUPPORT, // 该乘车码不支持
- ALIPAY_TRANS_CODE_SERVER_ERROR, // 服务端报错
- ALIPAY_TRANS_CODE_DEV_ERROR, // 不该出现的错误
+ ALIPAY_TRANS_CODE_UNBIND = ALIPAY_TRANS_CODE_START, // 设备已经在服务端解绑,设备端也需要调用解绑接口
+ ALIPAY_TRANS_CODE_NET_ERROR, // 网络错误
+ ALIPAY_TRANS_CODE_DATA_LIMIT, // 因安全原因限制生码
+ ALIPAY_TRANS_CODE_NOT_SUPPORT, // 该乘车码不支持
+ ALIPAY_TRANS_CODE_SERVER_ERROR, // 服务端报错
+ ALIPAY_TRANS_CODE_DEV_ERROR, // 不该出现的错误
} mc_alipay_trans_errcode_t;
typedef enum {
ALIPAY_MSG_BT = 0,
- ALIPAY_MSG_UPDATA_TRANS_LIST,
- ALIPAY_MSG_UPDATA_SPECIAL_CARD,
- ALIPAY_MSG_UPDATA_ALL_CARDS,
+ ALIPAY_MSG_UPDATA_TRANS_LIST, // 设备端更新乘车码列表
+ ALIPAY_MSG_UPDATA_SPECIAL_CARD, // 设备端更新特殊卡列表
+ ALIPAY_MSG_UPDATA_ALL_CARDS, // 设备端更新所有卡列表
} mc_alipay_msg_type_t;
* @brief alipay BLE module initialization.
* @return NULL.
*/
-void svr_alipay_bluetooth_init(void);
-
+void svr_alipay_bluetooth_init(uint8_t);
/*
* @brief alipay BLE adv start.
* @return NULL.
*/
uint32_t svr_alipay_register_cb(alipay_msgf_event_callback_func callback);
+
+bool Alipay_is_init(void);
+
#ifdef __cplusplus
#if __cplusplus
}