}\r
\r
if (ret != ERRCODE_SUCC) {\r
- if (ret != ERRCODE_I2C_TIMEOUT) MyPrintf("se i2c data read fail! and not equal ERRCODE_I2C_TIMEOUT , ret=0x%x", ret);\r
+ MyPrintf("se i2c data read fail! ret=0x%x", ret);\r
}\r
\r
#if PRINT_I2C_LOG\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
- // 检查UUID是否匹配支付宝服务ID\r
- if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_SERVICE_ID)) \r
- {\r
- // 打印服务添加回调的调试信息\r
+ if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_SERVICE_ID)) {\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;// 支付宝特征值ID\r
- gatts_add_chara_info_t character;// 特征值信息结构体\r
+ uint16_t id = ALIPAYY_CHARACTERISTIC_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); // 设置特征值UUID长度\r
+ character.chara_uuid.uuid_len = sizeof(id);\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
-//在特征添加成功后添加描述符。\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
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
- if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_CHARACTERISTIC_ID))\r
- {\r
+ unused(status);\r
+ if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_CHARACTERISTIC_ID)) {\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); // 将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
+ 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
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); // 将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
+ 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
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
-\r
- // 添加第二个描述符到特征值\r
- descriptor_ap.value = ble_data_mac_switch; // 设置描述符值为蓝牙地址\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
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
- // 检查写入的句柄是否匹配支付宝特征值或描述符的句柄\r
+ unused(server_id);\r
+ unused(conn_id);\r
+ unused(status);\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
- // 将数据写入支付宝消息队列\r
+ uint8_t *msg_data = write_cb_para->value;\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 ERRCODE_SUCC;
}
-static errcode_t svr_alipay_msg_thread(void *data)
+static void svr_alipay_msg_thread(void *data)
{
uint8_t msg_data[ALIPAY_MAX_SIZE + ALIPAY_ID_LEN + ALIPAY_MSG_LEN];
uint32_t msg_data_size = sizeof(msg_data);
svr_alipay_msg_proc(msg_id, &msg_data[ALIPAY_ID_LEN + ALIPAY_MSG_LEN], msg_len);
}
ALIPAY_PRINT_ERR(0, "svr_alipay_msg_thread exit");
- return ERRCODE_SUCC;
+ return;
}
static errcode_t svr_alipay_task_init(void)
#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)
#ifdef __cplusplus\r
extern "C" {\r
#endif\r
+#include "transspecard.h"\r
\r
#define HOSTENT_TIMEOUT 2000\r
#define TCP_CONNECT_TIMEOUT 2000\r
uint32_t g_tcp_fd = 0;\r
uint8_t g_netstatus = 0;\r
\r
+#define ALIPAY_TRANSSPECARD_SUPPORT_BLE 1\r
void msg_center_alipay_reply_ack(uint8_t cmd_id, uint8_t type)\r
{\r
uint8_t ack = 1; /* 与手机APK侧约定 */\r
\r
errcode_t msg_center_alipay_network_status(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
{\r
+ #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
+ if(cmd_id != ALIPAY_TRANSSPECARD)\r
+ {\r
+ printf("msg_center_alipay_network_status cmd_id error:%d\r\n", cmd_id);\r
+ return -1;\r
+ }\r
+ g_netstatus = *((uint8_t *)usr_data);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "msg_center_alipay_network_status:netstatus = %d\r\n", g_netstatus);\r
+ return 0;\r
+ #else\r
uint8_t tl_len = msg_center_get_tlv_tl_len(usr_data);\r
uint16_t payload_len = usr_len - tl_len;\r
uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_MSG_CENTER, "msg_center_alipay netstatus = %d\r\n", g_netstatus);\r
msg_center_alipay_reply_ack(cmd_id, type);\r
return 0;\r
+ #endif\r
}\r
\r
uint8_t msg_center_alipay_get_network_status(void)\r
\r
int msg_center_alipay_hostent_request(void *usr_data, uint16_t usr_len)\r
{\r
+ #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "DNS域名解析请求:%s\r\n", (char *)usr_data);\r
+ int ret;\r
+ if (g_alipay_hostent_sem == NULL) {\r
+ g_alipay_hostent_sem = osSemaphoreNew(1, 0, NULL);\r
+ }\r
+ ret = send_transspecard_data(MSGCENTER_TYPE_ID_ALIPAY_HOST_INFO, (uint8_t *)usr_data, usr_len);\r
+ if (ret != 0) {\r
+ return -1;\r
+ } else {\r
+ return 0;\r
+ }\r
+ #else\r
int ret;\r
if (g_alipay_hostent_sem == NULL) {\r
g_alipay_hostent_sem = osSemaphoreNew(1, 0, NULL);\r
} else {\r
return 0;\r
}\r
+ #endif\r
}\r
\r
errcode_t msg_center_alipay_hostent_recv(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
{\r
+ #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
+ if(cmd_id != ALIPAY_TRANSSPECARD)\r
+ {\r
+ printf("msg_center_alipay_network_status cmd_id error:%d\r\n", cmd_id);\r
+ return -1;\r
+ }\r
+ (void)memcpy_s(g_alipay_ip, IPV4_LEN, usr_data, usr_len);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "接收app下发的域名解析,域名转换后的IP地址:%d.%d.%d.%d\r\n",\r
+ g_alipay_ip[0], g_alipay_ip[1], g_alipay_ip[2], g_alipay_ip[3]);\r
+ osSemaphoreRelease(g_alipay_hostent_sem);\r
+ return ERRCODE_SUCC;\r
+ #else\r
uint8_t tl_len = msg_center_get_tlv_tl_len(usr_data);\r
uint16_t payload_len = usr_len - tl_len;\r
uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);\r
g_alipay_ip[0], g_alipay_ip[1], g_alipay_ip[2], g_alipay_ip[3]);\r
osSemaphoreRelease(g_alipay_hostent_sem);\r
return ERRCODE_SUCC;\r
+ #endif\r
}\r
\r
int msg_center_alipay_hostent_reponse(unsigned char *ip)\r
} else {\r
ret = -1;\r
}\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_MSG_CENTER, "hostent wait status = 0x%x\r\n", status);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "DNS解析 信号量获取状态 = 0x%x\r\n", status);\r
osSemaphoreDelete(g_alipay_hostent_sem);\r
g_alipay_hostent_sem = NULL;\r
return ret;\r
\r
int msg_center_alipay_connect_request(void *usr_data, uint16_t usr_len)\r
{\r
+ #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "tcp连接请求\r\n");\r
+ int ret;\r
+ if (g_alipay_tcp_sem == NULL) {\r
+ g_alipay_tcp_sem = osSemaphoreNew(1, 0, NULL);\r
+ }\r
+ ret = send_transspecard_data(MSGCENTER_TYPE_ID_ALIPAY_CONNECT, (uint8_t *)usr_data, usr_len);\r
+ if (ret != 0) {\r
+ return -1;\r
+ } else {\r
+ return 0;\r
+ }\r
+ #else\r
int ret;\r
if (g_alipay_tcp_sem == NULL) {\r
g_alipay_tcp_sem = osSemaphoreNew(1, 0, NULL);\r
} else {\r
return 0;\r
}\r
+ #endif\r
}\r
\r
errcode_t msg_center_alipay_connect_recv(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
{\r
+ #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
+ if(cmd_id != ALIPAY_TRANSSPECARD)\r
+ {\r
+ printf("msg_center_alipay_network_status cmd_id error:%d\r\n", cmd_id);\r
+ return -1;\r
+ }\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "接收tcp连接状态\r\n");\r
+ alipay_connect_reponse rep;\r
+ (void)memcpy_s(&rep, sizeof(alipay_connect_reponse), usr_data, usr_len);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "recv alipay_connect_reponse info--> %d %d\r\n",\r
+ rep.ret, rep.fd);\r
+ g_tcp_fd = rep.fd;\r
+ osSemaphoreRelease(g_alipay_tcp_sem);\r
+ return ERRCODE_SUCC;\r
+ #else\r
uint8_t tl_len = msg_center_get_tlv_tl_len(usr_data);\r
uint16_t payload_len = usr_len - tl_len;\r
uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);\r
g_tcp_fd = rep.fd;\r
osSemaphoreRelease(g_alipay_tcp_sem);\r
return ERRCODE_SUCC;\r
+ #endif\r
}\r
\r
int msg_center_alipay_connect_reponse(void)\r
{\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "msg_center_alipay_connect_reponse\r\n");\r
int ret;\r
osStatus_t status = osSemaphoreAcquire(g_alipay_tcp_sem, TCP_CONNECT_TIMEOUT);\r
if (status == osOK) {\r
} else {\r
ret = -1;\r
}\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_MSG_CENTER, "connect wait status = 0x%x\r\n", status);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "建立TCP连接 信号量获取状态 = %x\r\n", status);\r
return ret;\r
}\r
\r
int msg_center_alipay_tcpdata_request(void *usr_data, uint16_t usr_len)\r
{\r
+ #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "tcp数据请求 = %d\r\n",usr_len);\r
+ int ret; \r
+ ret = send_transspecard_data(MSGCENTER_TYPE_ID_ALIPAY_TCPDATA_RECV, usr_data, usr_len);\r
+ if (ret != ERRCODE_SUCC) {\r
+ return -1;\r
+ } else {\r
+ return (int)usr_len;\r
+ }\r
+ #else\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_MSG_CENTER, "tcpdata send len = 0x%x\r\n", usr_len);\r
int ret;\r
ret = msg_center_send_data(MSGCENTER_CMD_ALIPAY, MSGCENTER_TYPE_ID_ALIPAY_TCPDATA_RECV, usr_data, usr_len);\r
} else {\r
return (int)usr_len;\r
}\r
+ #endif\r
}\r
\r
int msg_center_alipay_tcpdata_wait(uint32_t timeout)\r
{\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "msg_center_alipay_tcpdata_wait = %d\r\n",timeout);\r
int ret;\r
osStatus_t status = osSemaphoreAcquire(g_alipay_tcp_sem, timeout);\r
if (status == osOK) {\r
} else {\r
ret = 0;\r
}\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_MSG_CENTER, "tcpdata wait status = 0x%x\r\n", status);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "请求TCP数据 信号量获取状态 0x%x\r\n", status);\r
return ret;\r
}\r
\r
errcode_t msg_center_alipay_tcpdata_recv(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
{\r
+ #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
+ if(cmd_id != ALIPAY_TRANSSPECARD)\r
+ {\r
+ printf("msg_center_alipay_network_status cmd_id error:%d\r\n", cmd_id);\r
+ return -1;\r
+ }\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "接收tcp数据:%d\r\n",usr_len);\r
+ if (g_tcp_data != NULL) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER,\r
+ "The last buff hasn't been read yet, current payload len is %u.\r\n", usr_len);\r
+ return ERRCODE_FAIL;\r
+ }\r
+ g_tcp_data = (uint8_t *)malloc(usr_len);\r
+ if (g_tcp_data != NULL) {\r
+ g_tcp_data_len = usr_len;\r
+ (void)memcpy_s(g_tcp_data, g_tcp_data_len, usr_data, usr_len);\r
+ }\r
+\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "recv tcpdata len = %d\r\n",\r
+ g_tcp_data_len);\r
+ osSemaphoreRelease(g_alipay_tcp_sem);\r
+ return ERRCODE_SUCC;\r
+ #else\r
uint8_t tl_len = msg_center_get_tlv_tl_len(usr_data);\r
uint16_t payload_len = usr_len - tl_len;\r
uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);\r
g_tcp_data_len);\r
osSemaphoreRelease(g_alipay_tcp_sem);\r
return ERRCODE_SUCC;\r
+ #endif\r
}\r
\r
+//接受数据\r
int msg_center_alipay_tcpdata_read(void *mem, int len)\r
{\r
+ #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
+ int ret = 0;\r
+ // printf("进入 msg_center_alipay_tcpdata_read 函数,请求读取的长度为: %d\n", len);\r
+\r
+ if (g_tcp_data != NULL) {\r
+ // printf("g_tcp_data 不为 NULL,准备读取数据\n");\r
+ int read_len = min(len, g_tcp_data_len);\r
+ // printf("实际可读取的长度为: %d\n", read_len);\r
+\r
+ (void)memcpy_s(mem, len, g_tcp_data + g_tcp_data_readed, read_len);\r
+ // printf("已将 %d 字节的数据从 g_tcp_data 复制到 mem\n", read_len);\r
+\r
+ g_tcp_data_readed += read_len;\r
+ g_tcp_data_len -= read_len;\r
+ // printf("更新后,已读取的数据长度为: %d,剩余数据长度为: %d\n", g_tcp_data_readed, g_tcp_data_len);\r
+\r
+ ret = read_len;\r
+\r
+ if (g_tcp_data_len == 0) {\r
+ // printf("数据已全部读取,释放 g_tcp_data 内存\n");\r
+ free(g_tcp_data);\r
+ g_tcp_data = NULL;\r
+ g_tcp_data_readed = 0;\r
+ // printf("g_tcp_data 已置为 NULL,已读取数据长度重置为 0\n");\r
+ }\r
+ } else {\r
+ ret = -2; // no data for read\r
+ // printf("g_tcp_data 为 NULL,没有数据可供读取,返回 -2\n");\r
+ }\r
+ // printf("离开 msg_center_alipay_tcpdata_read 函数,实际读取的长度为: %d\n", ret);\r
+ return ret;\r
+ #else\r
int ret = 0;\r
if (g_tcp_data != NULL) {\r
int read_len = min(len, g_tcp_data_len);\r
}\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "read tcpdata len = (%d, %d)\r\n", len, ret);\r
return ret;\r
+ #endif\r
}\r
\r
int msg_center_alipay_close_request(void)\r
{\r
+ #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "发送socket关闭请求\r\n");\r
+ if (g_alipay_tcp_sem != NULL) {\r
+ osSemaphoreDelete(g_alipay_tcp_sem);\r
+ g_alipay_tcp_sem = NULL;\r
+ }\r
+ if (g_tcp_data != NULL) {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "need free data buff.\r\n");\r
+ free(g_tcp_data);\r
+ g_tcp_data = NULL;\r
+ g_tcp_data_readed = 0;\r
+ }\r
+ int ret;\r
+ int send_ret = send_transspecard_data(MSGCENTER_TYPE_ID_ALIPAY_CLOSE, &g_tcp_fd, sizeof(g_tcp_fd));\r
+ if (send_ret != ERRCODE_SUCC) {\r
+ ret = -1;\r
+ } else {\r
+ ret = 0;\r
+ }\r
+ g_tcp_fd = 0;\r
+ return ret;\r
+ #else\r
if (g_alipay_tcp_sem != NULL) {\r
osSemaphoreDelete(g_alipay_tcp_sem);\r
g_alipay_tcp_sem = NULL;\r
}\r
g_tcp_fd = 0;\r
return ret;\r
+ #endif\r
}\r
\r
errcode_t msg_center_alipay_close(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
{\r
+ #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
+ if(cmd_id != ALIPAY_TRANSSPECARD)\r
+ {\r
+ printf("msg_center_alipay_close cmd_id error:%d,ecpected cmd_id is:0x09\r\n", cmd_id);\r
+ return -1;\r
+ }\r
+ return ERRCODE_SUCC;\r
+ #else\r
uint8_t tl_len = msg_center_get_tlv_tl_len(usr_data);\r
uint16_t payload_len = usr_len - tl_len;\r
uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);\r
\r
return ERRCODE_SUCC;\r
+ #endif\r
}\r
\r
errcode_t msg_center_alipay_time_sync(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
#ifdef __cplusplus\r
extern "C" {\r
#endif\r
-#include "transspecard.h"\r
\r
#define HOSTENT_TIMEOUT 2000\r
#define TCP_CONNECT_TIMEOUT 2000\r
uint32_t g_tcp_fd = 0;\r
uint8_t g_netstatus = 0;\r
\r
-#define ALIPAY_TRANSSPECARD_SUPPORT_BLE 1\r
void msg_center_alipay_reply_ack(uint8_t cmd_id, uint8_t type)\r
{\r
uint8_t ack = 1; /* 与手机APK侧约定 */\r
\r
errcode_t msg_center_alipay_network_status(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
{\r
- #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
- if(cmd_id != ALIPAY_TRANSSPECARD)\r
- {\r
- printf("msg_center_alipay_network_status cmd_id error:%d\r\n", cmd_id);\r
- return -1;\r
- }\r
- g_netstatus = *((uint8_t *)usr_data);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "msg_center_alipay_network_status:netstatus = %d\r\n", g_netstatus);\r
- return 0;\r
- #else\r
uint8_t tl_len = msg_center_get_tlv_tl_len(usr_data);\r
uint16_t payload_len = usr_len - tl_len;\r
uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_MSG_CENTER, "msg_center_alipay netstatus = %d\r\n", g_netstatus);\r
msg_center_alipay_reply_ack(cmd_id, type);\r
return 0;\r
- #endif\r
}\r
\r
uint8_t msg_center_alipay_get_network_status(void)\r
\r
int msg_center_alipay_hostent_request(void *usr_data, uint16_t usr_len)\r
{\r
- #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "DNS域名解析请求:%s\r\n", (char *)usr_data);\r
- int ret;\r
- if (g_alipay_hostent_sem == NULL) {\r
- g_alipay_hostent_sem = osSemaphoreNew(1, 0, NULL);\r
- }\r
- ret = send_transspecard_data(MSGCENTER_TYPE_ID_ALIPAY_HOST_INFO, (uint8_t *)usr_data, usr_len);\r
- if (ret != 0) {\r
- return -1;\r
- } else {\r
- return 0;\r
- }\r
- #else\r
int ret;\r
if (g_alipay_hostent_sem == NULL) {\r
g_alipay_hostent_sem = osSemaphoreNew(1, 0, NULL);\r
} else {\r
return 0;\r
}\r
- #endif\r
}\r
\r
errcode_t msg_center_alipay_hostent_recv(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
{\r
- #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
- if(cmd_id != ALIPAY_TRANSSPECARD)\r
- {\r
- printf("msg_center_alipay_network_status cmd_id error:%d\r\n", cmd_id);\r
- return -1;\r
- }\r
- (void)memcpy_s(g_alipay_ip, IPV4_LEN, usr_data, usr_len);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "接收app下发的域名解析,域名转换后的IP地址:%d.%d.%d.%d\r\n",\r
- g_alipay_ip[0], g_alipay_ip[1], g_alipay_ip[2], g_alipay_ip[3]);\r
- osSemaphoreRelease(g_alipay_hostent_sem);\r
- return ERRCODE_SUCC;\r
- #else\r
uint8_t tl_len = msg_center_get_tlv_tl_len(usr_data);\r
uint16_t payload_len = usr_len - tl_len;\r
uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);\r
g_alipay_ip[0], g_alipay_ip[1], g_alipay_ip[2], g_alipay_ip[3]);\r
osSemaphoreRelease(g_alipay_hostent_sem);\r
return ERRCODE_SUCC;\r
- #endif\r
}\r
\r
int msg_center_alipay_hostent_reponse(unsigned char *ip)\r
} else {\r
ret = -1;\r
}\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "DNS解析 信号量获取状态 = 0x%x\r\n", status);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_MSG_CENTER, "hostent wait status = 0x%x\r\n", status);\r
osSemaphoreDelete(g_alipay_hostent_sem);\r
g_alipay_hostent_sem = NULL;\r
return ret;\r
\r
int msg_center_alipay_connect_request(void *usr_data, uint16_t usr_len)\r
{\r
- #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "tcp连接请求\r\n");\r
- int ret;\r
- if (g_alipay_tcp_sem == NULL) {\r
- g_alipay_tcp_sem = osSemaphoreNew(1, 0, NULL);\r
- }\r
- ret = send_transspecard_data(MSGCENTER_TYPE_ID_ALIPAY_CONNECT, (uint8_t *)usr_data, usr_len);\r
- if (ret != 0) {\r
- return -1;\r
- } else {\r
- return 0;\r
- }\r
- #else\r
int ret;\r
if (g_alipay_tcp_sem == NULL) {\r
g_alipay_tcp_sem = osSemaphoreNew(1, 0, NULL);\r
} else {\r
return 0;\r
}\r
- #endif\r
}\r
\r
errcode_t msg_center_alipay_connect_recv(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
{\r
- #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
- if(cmd_id != ALIPAY_TRANSSPECARD)\r
- {\r
- printf("msg_center_alipay_network_status cmd_id error:%d\r\n", cmd_id);\r
- return -1;\r
- }\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "接收tcp连接状态\r\n");\r
- alipay_connect_reponse rep;\r
- (void)memcpy_s(&rep, sizeof(alipay_connect_reponse), usr_data, usr_len);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "recv alipay_connect_reponse info--> %d %d\r\n",\r
- rep.ret, rep.fd);\r
- g_tcp_fd = rep.fd;\r
- osSemaphoreRelease(g_alipay_tcp_sem);\r
- return ERRCODE_SUCC;\r
- #else\r
uint8_t tl_len = msg_center_get_tlv_tl_len(usr_data);\r
uint16_t payload_len = usr_len - tl_len;\r
uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);\r
g_tcp_fd = rep.fd;\r
osSemaphoreRelease(g_alipay_tcp_sem);\r
return ERRCODE_SUCC;\r
- #endif\r
}\r
\r
int msg_center_alipay_connect_reponse(void)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "msg_center_alipay_connect_reponse\r\n");\r
int ret;\r
osStatus_t status = osSemaphoreAcquire(g_alipay_tcp_sem, TCP_CONNECT_TIMEOUT);\r
if (status == osOK) {\r
} else {\r
ret = -1;\r
}\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "建立TCP连接 信号量获取状态 = %x\r\n", status);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_MSG_CENTER, "connect wait status = 0x%x\r\n", status);\r
return ret;\r
}\r
\r
int msg_center_alipay_tcpdata_request(void *usr_data, uint16_t usr_len)\r
{\r
- #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "tcp数据请求 = %d\r\n",usr_len);\r
- int ret; \r
- ret = send_transspecard_data(MSGCENTER_TYPE_ID_ALIPAY_TCPDATA_RECV, usr_data, usr_len);\r
- if (ret != ERRCODE_SUCC) {\r
- return -1;\r
- } else {\r
- return (int)usr_len;\r
- }\r
- #else\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_MSG_CENTER, "tcpdata send len = 0x%x\r\n", usr_len);\r
int ret;\r
ret = msg_center_send_data(MSGCENTER_CMD_ALIPAY, MSGCENTER_TYPE_ID_ALIPAY_TCPDATA_RECV, usr_data, usr_len);\r
} else {\r
return (int)usr_len;\r
}\r
- #endif\r
}\r
\r
int msg_center_alipay_tcpdata_wait(uint32_t timeout)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "msg_center_alipay_tcpdata_wait = %d\r\n",timeout);\r
int ret;\r
osStatus_t status = osSemaphoreAcquire(g_alipay_tcp_sem, timeout);\r
if (status == osOK) {\r
} else {\r
ret = 0;\r
}\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "请求TCP数据 信号量获取状态 0x%x\r\n", status);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_MSG_CENTER, "tcpdata wait status = 0x%x\r\n", status);\r
return ret;\r
}\r
\r
errcode_t msg_center_alipay_tcpdata_recv(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
{\r
- #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
- if(cmd_id != ALIPAY_TRANSSPECARD)\r
- {\r
- printf("msg_center_alipay_network_status cmd_id error:%d\r\n", cmd_id);\r
- return -1;\r
- }\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "接收tcp数据:%d\r\n",usr_len);\r
- if (g_tcp_data != NULL) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER,\r
- "The last buff hasn't been read yet, current payload len is %u.\r\n", usr_len);\r
- return ERRCODE_FAIL;\r
- }\r
- g_tcp_data = (uint8_t *)malloc(usr_len);\r
- if (g_tcp_data != NULL) {\r
- g_tcp_data_len = usr_len;\r
- (void)memcpy_s(g_tcp_data, g_tcp_data_len, usr_data, usr_len);\r
- }\r
-\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "recv tcpdata len = %d\r\n",\r
- g_tcp_data_len);\r
- osSemaphoreRelease(g_alipay_tcp_sem);\r
- return ERRCODE_SUCC;\r
- #else\r
uint8_t tl_len = msg_center_get_tlv_tl_len(usr_data);\r
uint16_t payload_len = usr_len - tl_len;\r
uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);\r
g_tcp_data_len);\r
osSemaphoreRelease(g_alipay_tcp_sem);\r
return ERRCODE_SUCC;\r
- #endif\r
}\r
\r
-//接受数据\r
int msg_center_alipay_tcpdata_read(void *mem, int len)\r
{\r
- #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
- int ret = 0;\r
- // printf("进入 msg_center_alipay_tcpdata_read 函数,请求读取的长度为: %d\n", len);\r
-\r
- if (g_tcp_data != NULL) {\r
- // printf("g_tcp_data 不为 NULL,准备读取数据\n");\r
- int read_len = min(len, g_tcp_data_len);\r
- // printf("实际可读取的长度为: %d\n", read_len);\r
-\r
- (void)memcpy_s(mem, len, g_tcp_data + g_tcp_data_readed, read_len);\r
- // printf("已将 %d 字节的数据从 g_tcp_data 复制到 mem\n", read_len);\r
-\r
- g_tcp_data_readed += read_len;\r
- g_tcp_data_len -= read_len;\r
- // printf("更新后,已读取的数据长度为: %d,剩余数据长度为: %d\n", g_tcp_data_readed, g_tcp_data_len);\r
-\r
- ret = read_len;\r
-\r
- if (g_tcp_data_len == 0) {\r
- // printf("数据已全部读取,释放 g_tcp_data 内存\n");\r
- free(g_tcp_data);\r
- g_tcp_data = NULL;\r
- g_tcp_data_readed = 0;\r
- // printf("g_tcp_data 已置为 NULL,已读取数据长度重置为 0\n");\r
- }\r
- } else {\r
- ret = -2; // no data for read\r
- // printf("g_tcp_data 为 NULL,没有数据可供读取,返回 -2\n");\r
- }\r
- // printf("离开 msg_center_alipay_tcpdata_read 函数,实际读取的长度为: %d\n", ret);\r
- return ret;\r
- #else\r
int ret = 0;\r
if (g_tcp_data != NULL) {\r
int read_len = min(len, g_tcp_data_len);\r
}\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "read tcpdata len = (%d, %d)\r\n", len, ret);\r
return ret;\r
- #endif\r
}\r
\r
int msg_center_alipay_close_request(void)\r
{\r
- #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "发送socket关闭请求\r\n");\r
- if (g_alipay_tcp_sem != NULL) {\r
- osSemaphoreDelete(g_alipay_tcp_sem);\r
- g_alipay_tcp_sem = NULL;\r
- }\r
- if (g_tcp_data != NULL) {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "need free data buff.\r\n");\r
- free(g_tcp_data);\r
- g_tcp_data = NULL;\r
- g_tcp_data_readed = 0;\r
- }\r
- int ret;\r
- int send_ret = send_transspecard_data(MSGCENTER_TYPE_ID_ALIPAY_CLOSE, &g_tcp_fd, sizeof(g_tcp_fd));\r
- if (send_ret != ERRCODE_SUCC) {\r
- ret = -1;\r
- } else {\r
- ret = 0;\r
- }\r
- g_tcp_fd = 0;\r
- return ret;\r
- #else\r
if (g_alipay_tcp_sem != NULL) {\r
osSemaphoreDelete(g_alipay_tcp_sem);\r
g_alipay_tcp_sem = NULL;\r
}\r
g_tcp_fd = 0;\r
return ret;\r
- #endif\r
}\r
\r
errcode_t msg_center_alipay_close(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
{\r
- #if ALIPAY_TRANSSPECARD_SUPPORT_BLE\r
- if(cmd_id != ALIPAY_TRANSSPECARD)\r
- {\r
- printf("msg_center_alipay_close cmd_id error:%d,ecpected cmd_id is:0x09\r\n", cmd_id);\r
- return -1;\r
- }\r
- return ERRCODE_SUCC;\r
- #else\r
uint8_t tl_len = msg_center_get_tlv_tl_len(usr_data);\r
uint16_t payload_len = usr_len - tl_len;\r
uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);\r
\r
return ERRCODE_SUCC;\r
- #endif\r
}\r
\r
errcode_t msg_center_alipay_time_sync(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
g_ble_conn_id=conn_id;\r
uapi_save_runtime_log(RUNTIME_LOG_BLE_APP_CMD);\r
}\r
- // if(is_alipay_handle(write_cb_para->handle))\r
- // {\r
- // g_ble_Alipay_conn_id=conn_id;\r
- // uapi_save_runtime_log(RUNTIME_LOG_BLE_ALIPAY_CMD);\r
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"g_ble_Alipay_conn_id\r\n");\r
- // }\r
+ #ifdef SUPPORT_ALIPAY_SEC\r
+ if(is_alipay_handle(write_cb_para->handle))\r
+ {\r
+ g_ble_Alipay_conn_id=conn_id;\r
+ uapi_save_runtime_log(RUNTIME_LOG_BLE_ALIPAY_CMD);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"g_ble_Alipay_conn_id\r\n");\r
+ }\r
+ #endif\r
// else\r
// {\r
// WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," ?????\r\n");\r
#ifdef SUPPORT_HID_SERVICE\r
// ble_hid_server_init();\r
#endif\r
- #ifdef AILPAY_SUPPORT\r
+ #ifdef SUPPORT_ALIPAY_SEC\r
svr_alipay_bluetooth_init(g_ble_server_id);\r
#endif\r
#ifdef FACTORYTEST_SERVICE\r
case MODE_ALIPAY_ADV_SRV:\r
\r
\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"alipay_ble_advd_start!!!!!!!!! ble_adv_falg: %d ,AdverFlag: %d",ble_adv_falg,AdverFlag);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"alipay_ble_advd_start!!!!!!!!! ble_adv_falg: %d ,AdverFlag: %d",ble_adv_falg,AdverFlag);\r
svr_ble_adv_start(); \r
\r
break;\r