From 57687c969d19664cf168685b228b8edb28b6ddef Mon Sep 17 00:00:00 2001 From: SnickerSun Date: Sat, 7 Sep 2024 14:36:11 +0800 Subject: [PATCH] =?utf8?q?cywee=20chipinfo=E6=BF=80=E6=B4=BB=E7=9A=84?= =?utf8?q?=E8=AE=BE=E5=A4=87=E8=BD=ACmac=E6=BF=80=E6=B4=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../brandy/brandy_standard/thread_pri_init.c | 7 +- .../drivers/peripheral/cywee/src/main_dml.c | 12 + .../drivers/peripheral/utils/custom_utils.c | 322 +++++++++++++++++- .../drivers/peripheral/utils/custom_utils.h | 6 + 4 files changed, 339 insertions(+), 8 deletions(-) diff --git a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c index a28102f52..a7b4c29b3 100755 --- a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c +++ b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c @@ -460,10 +460,10 @@ uapi_pm_remove_sleep_veto(PM_ID_DEBUG); cat1_tcp_server_init(); #endif + /*蓝牙接收数据处理服务*/ uapi_blesrv_service_init(); - start_custom_ble_service(); - + #ifdef ENABLE_CUSTOM_I2C errcode_t result = custom_iic_init(); if(result != SUCC) @@ -486,6 +486,9 @@ uapi_pm_remove_sleep_veto(PM_ID_DEBUG); } #endif + /*启动蓝牙ble服务,cywee有重置 mac地址的操作,会需要把 蓝牙服务开启放在cywee服务之后*/ + start_custom_ble_service(); + #ifdef SUPPORT_ALIPAY_SEC #if !defined(A5133_DEMO_SERVER) && !defined(A5133_DEMO_CLIENT) uapi_alipay_svr_init(); diff --git a/code/sdk/drivers/peripheral/cywee/src/main_dml.c b/code/sdk/drivers/peripheral/cywee/src/main_dml.c index 5ae711c5f..2f92cd21b 100644 --- a/code/sdk/drivers/peripheral/cywee/src/main_dml.c +++ b/code/sdk/drivers/peripheral/cywee/src/main_dml.c @@ -1194,6 +1194,18 @@ int cywee_main_dml(void) CWM_OS_dbgPrintf("have_security = %d.%d ret_buff_size = %d chipInfo = %s\n", scl.iData[5], scl.iData[6], scl.iData[4], chipInfo); CWM_OS_dbgPrintf("chip_settings = %d, %d, %d\n", scl.iData[9], scl.iData[10], scl.iData[11]); //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__); + + +#ifdef CYWEE_MAC_ACTIVE + /******************获取chipinfo 找到对应的btmac 并配置进去*************************/ + int chipinfolen = strlen((char*)chipInfo); + if (chipinfolen >= 4) + { + uint32_t chipinfo_num= *(uint32_t*)(&chipInfo[chipinfolen - 4]); + change_mac_from_chipinfo_map(chipinfo_num); + } + /*******************************************/ +#endif if(scl.iData[5] == 1) { cywee_is_active = 1; diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index c992d7a02..cb304b5bf 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -1307,7 +1307,7 @@ errcode_t uapi_get_nv_btaddr(uint8_t *buf_btaddr, uint32_t *len_btaddr) uint32_t max_input_len = *len_btaddr; memcpy_s(buf_btaddr,max_input_len,btinfo.bd_addr,sizeof(btinfo.bd_addr)); *len_btaddr = sizeof(btinfo.bd_addr); - printf("get nv local_addr : ******%02x%02x%02x\n", buf_btaddr[2], buf_btaddr[1], buf_btaddr[0]); + printf("get nv local_addr : ******%02x%02x%02x\n", buf_btaddr[3], buf_btaddr[4], buf_btaddr[5]); #endif @@ -2722,11 +2722,11 @@ void uapi_cywee_save_mac_key(const uint8_t *key_data,uint16_t len) #ifdef CYWEE_MAC_ACTIVE uint8_t DEFAULT_MAC_KEY[78] = { - 0x23, 0x20, 0x86, 0xae, 0x4e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1f, 0x01, 0x23, 0x99, 0xb1, 0x5a, - 0xc4, 0xc7, 0xa3, 0x43, 0x00, 0xa6, 0x4c, 0x53, 0x2a, 0xbe, 0x62, 0x1c, 0x48, 0x31, 0x78, 0x5e, - 0x56, 0x49, 0x2e, 0x1f, 0xbe, 0xb0, 0xa7, 0xee, 0x3d, 0x6b, 0x6d, 0x36, 0x56, 0xe0, 0x04, 0x35, - 0x4f, 0x5e, 0x4a, 0xa7, 0x74, 0xa7, 0x91, 0x75, 0x0b, 0x8a, 0x8b, 0x69, 0xeb, 0x51, 0x0c, 0x12, - 0x92, 0x6a, 0x8c, 0xe9, 0x45, 0x70, 0x00, 0x62, 0xc9, 0x21, 0xef, 0x8b, 0x26, 0xdf, + 0x23, 0x20, 0x86, 0xae, 0x4e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1f, 0x02, 0x4c, 0x07, 0x5b, 0xf0, + 0x12, 0xc4, 0xf9, 0xeb, 0xea, 0xce, 0x8e, 0x7b, 0xa7, 0x92, 0xf4, 0x4c, 0x6c, 0x75, 0x2f, 0xd5, + 0x86, 0x23, 0xda, 0x9b, 0xf3, 0x9f, 0xe1, 0x21, 0x47, 0xa0, 0x15, 0x83, 0x4c, 0x86, 0x60, 0xba, + 0xc2, 0xef, 0x21, 0x84, 0x93, 0x0d, 0x8a, 0xf6, 0xe8, 0x29, 0x10, 0xde, 0x68, 0xfa, 0x5c, 0x17, + 0x93, 0x68, 0x8e, 0xeb, 0x47, 0xbf, 0x59, 0x3d, 0x96, 0x7e, 0xb0, 0xd5, 0x79, 0x80, }; #endif void uapi_cywee_get_mac_key(uint8_t *key_data,uint16_t *len) @@ -2985,3 +2985,313 @@ void start_save_file_thread(void) PRINT("create save file thread failed %d!\r\n",ret); } } +#if 1 //defined(CYWEE_MAC_ACTIVE) +typedef struct +{ + uint32_t chipinfo; + uint16_t mac; +} chiinfo_mac_pair; + +static chiinfo_mac_pair g_chipinfo_map[]={ +{0xD9CC9E36,0x0001}, +{0x2D3BF936,0x0002}, +{0xC5337236,0x0003}, +{0xB0FCA736,0x0004}, +{0x35D07A36,0x0005}, +{0x1E976A36,0x0006}, +{0x8A57CD36,0x0007}, +{0x97F6A636,0x0008}, +{0x71758B36,0x0009}, +{0x8625E036,0x000A}, +{0xE0B06936,0x000B}, +{0x73A9B136,0x000C}, +{0x38B76936,0x000D}, +{0xE474F636,0x000E}, +{0xFA99DE36,0x000F}, +{0x41560A36,0x0010}, +{0xCA2CE836,0x0011}, +{0x4DF35936,0x0012}, +{0x1C748A36,0x0013}, +{0x3CEB5D36,0x0014}, +{0x4C4E6136,0x0015}, +{0x34608836,0x0016}, +{0xCDA7DE36,0x0017}, +{0xE4ED4436,0x0018}, +{0x3B9D7936,0x0019}, +{0xDA128D36,0x001A}, +{0xA62C7236,0x001B}, +{0x18855536,0x001C}, +{0x42088F36,0x001D}, +{0xC2752336,0x001E}, +{0x8D581636,0x001F}, +{0x0E5E9D36,0x0020}, +{0x06CA9E36,0x0021}, +{0x98368E36,0x0022}, +{0xF56EB836,0x0023}, +{0x0EF75536,0x0024}, +{0xBB293736,0x0025}, +{0x969CE636,0x0026}, +{0x00F66136,0x0027}, +{0x74F04336,0x0028}, +{0xDD54C136,0x0029}, +{0xD2EE8636,0x002A}, +{0xB80CF336,0x002B}, +{0xD5CC1E36,0x002C}, +{0xD05AC336,0x002D}, +{0x1AB93436,0x002E}, +{0x20DE5F36,0x002F}, +{0x49D9C136,0x0030}, +{0xFB5C0436,0x0031}, +{0x5141CC36,0x0032}, +{0xBEE9A436,0x0033}, +{0xDE575336,0x0034}, +{0xDE18CA36,0x0035}, +{0x371B2D36,0x0036}, +{0x484C3E36,0x0037}, +{0xBE8D1036,0x0038}, +{0xE0468A36,0x0039}, +{0xC341D936,0x003A}, +{0x3AF6B836,0x003B}, +{0x362CFA36,0x003C}, +{0xFBA6FC36,0x003D}, +{0xDDD75136,0x003E}, +{0xD9F9E736,0x003F}, +{0x0DBE0336,0x0040}, +{0xE344F636,0x0041}, +{0xE5824636,0x0042}, +{0x056C5536,0x0043}, +{0x81D3F736,0x0044}, +{0x24835636,0x0045}, +{0xEA520036,0x0046}, +{0xB8E0E936,0x0047}, +{0x5669CC36,0x0048}, +{0x2E370636,0x0049}, +{0x2C570E36,0x004A}, +{0x26E4E236,0x004B}, +{0xFD22F536,0x004C}, +{0x5C233536,0x004D}, +{0x80299236,0x004E}, +{0xF797EC36,0x004F}, +{0x76457736,0x0050}, +{0x8574B536,0x0051}, +{0xF5D1FC36,0x0052}, +{0x1BD70436,0x0053}, +{0x86164C36,0x0054}, +{0x56435B36,0x0055}, +{0x56E62D36,0x0056}, +{0x9B4FC136,0x0057}, +{0xDFEEAD36,0x0058}, +{0x85E2A736,0x0059}, +{0x61867A36,0x005A}, +{0xBBBC3436,0x005B}, +{0x3AD1F136,0x005C}, +{0xB76E9536,0x005D}, +{0x03C0FB36,0x005E}, +{0x1AAAA336,0x005F}, +{0x14182936,0x0060}, +{0xF371CB36,0x0061}, +{0xD6990336,0x0062}, +{0x54A90036,0x0063}, +{0x6323EC36,0x0064}, +{0xF33B0B36,0x0065}, +{0x873E3136,0x0066}, +{0x3E94FF36,0x0067}, +{0x29BAA436,0x0068}, +{0x275EAC36,0x0069}, +{0x361E5B36,0x006A}, +{0x34DF9A36,0x006B}, +{0x787F5236,0x006C}, +{0x38AD1536,0x006D}, +{0x6C5FDE36,0x006E}, +{0x32AF7536,0x006F}, +{0x0A8C0436,0x0070}, +{0x4F13F836,0x0071}, +{0xDDDB8736,0x0072}, +{0xF513B036,0x0073}, +{0x1F097036,0x0074}, +{0x82C55236,0x0075}, +{0x230EE636,0x0076}, +{0xFEFD8536,0x0077}, +{0xAAA17F36,0x0078}, +{0xDE56A136,0x0079}, +{0xCFF0CE36,0x007A}, +{0x15052136,0x007B}, +{0xCF823936,0x007C}, +{0x463B4236,0x007D}, +{0xC1527536,0x007E}, +{0x9F7C6636,0x007F}, +{0xCE48AF36,0x0080}, +{0xE5183C36,0x0081}, +{0x4DF6FC36,0x0082}, +{0x64B69536,0x0083}, +{0x23964D36,0x0084}, +{0x36ABA236,0x0085}, +{0x47294236,0x0086}, +{0x490F8C36,0x0087}, +{0xA575EB36,0x0088}, +{0x37BB9136,0x0089}, +{0x9BBFAF36,0x008A}, +{0x5A3E8136,0x008B}, +{0x2E9E7B36,0x008C}, +{0xDE290336,0x008D}, +{0x13B40436,0x008E}, +{0x183AEC36,0x008F}, +{0xA3A8A536,0x0090}, +{0x4E7B2336,0x0091}, +{0x6D3C7636,0x0092}, +{0x3F7A8336,0x0093}, +{0xCA623636,0x0094}, +{0x8AB9B736,0x0095}, +{0xC9C9D136,0x0096}, +{0x75092536,0x0097}, +{0x9E764C36,0x0098}, +{0x67B7B236,0x0099}, +{0x67D80A36,0x009A}, +{0xCF963F36,0x009B}, +{0x1F3FB336,0x009C}, +{0xB3FC7436,0x009D}, +{0xC78D3636,0x009E}, +{0x8A86ED36,0x009F}, +{0x0E06D236,0x00A0}, +{0x9F432436,0x00A1}, +{0x3AEA7A36,0x00A2}, +{0x26DF4536,0x00A3}, +{0xE3149D36,0x00A4}, +{0x3E21FF36,0x00A5}, +{0x7030FA36,0x00A6}, +{0x7AEFF236,0x00A7}, +{0x7427F636,0x00A8}, +{0x972ED936,0x00A9}, +{0x2466DE36,0x00AA}, +{0xE5991936,0x00AB}, +{0x73CAD736,0x00AC}, +{0x71A70736,0x00AD}, +{0x7EB80A36,0x00AE}, +{0x5F4B5B36,0x00AF}, +{0xEC798D36,0x00B0}, +{0x8483A936,0x00B1}, +{0xFAB54E36,0x00B2}, +{0x03489536,0x00B3}, +{0xC8315536,0x00B4}, +{0x92259336,0x00B5}, +{0xBE5D5536,0x00B6}, +{0xFDA26836,0x00B7}, +{0xBF9A6036,0x00B8}, +{0xF7B05B36,0x00B9}, +{0xA6318F36,0x00BA}, +{0x044DF436,0x00BB}, +{0xAEFC3836,0x00BC}, +{0xA16A7E36,0x00BD}, +{0x5124F636,0x00BE}, +{0x45E4F336,0x00BF}, +{0xCFCD5D36,0x00C0}, +{0x50E27A36,0x00C1}, +{0x4CF33C36,0x00C2}, +{0x609CC736,0x00C3}, +{0xEBB98436,0x00C4}, +{0x21FEDE36,0x00C5}, +{0xB3AA8436,0x00C6}, +{0xB6780E36,0x00C7}, +{0x326F9536,0x00C8}, +{0xA07E0536,0x00C9}, +{0x52070036,0x00CA}, +{0xBC720B36,0x00CB}, +{0xE4849136,0x00CC}, +{0xC9012536,0x00CD}, +{0x8A5B0F36,0x00CE}, +{0xEF572B36,0x00CF}, +{0x3F13A636,0x00D0}, +{0x0FF25636,0x00D1}, +{0x8A619A36,0x00D2}, +{0x6F6B6F36,0x00D3}, +{0xE7A99A36,0x00D4}, +{0x02461436,0x00D5}, +{0x39DC3236,0x00D6}, +{0xD7B84036,0x00D7}, +{0xB1B20C36,0x00D8}, +{0x8781EB36,0x00D9}, +{0x192D9236,0x00DA}, +{0xE0118136,0x00DB}, +{0xFE480B36,0x00DC}, +{0xC87B5F36,0x00DD}, +{0xA6D3CC36,0x00DE}, +{0xDB2A3036,0x00DF}, +{0x0F5EC636,0x00E0}, +{0xD4855D36,0x00E1}, +{0x9A0CD036,0x00E2}, +{0xF0BC3E36,0x00E3}, +{0x72093436,0x00E4}, +{0x8D575C36,0x00E5}, +{0xBC04DC36,0x00E6}, +{0x5A7B1736,0x00E7}, +{0x3EDF6536,0x00E8}, +{0xAAD3D436,0x00E9}, +{0x58444236,0x00EA}, +{0xAC162836,0x00EB}, +{0x45F3CB36,0x00EC}, +{0xB9CB1F36,0x00ED}, +{0x4FD58F36,0x00EE}, +{0x51EC8936,0x00EF}, +{0x7EC4A636,0x00F0}, +{0x7BBA1736,0x00F1}, +{0xE25A0936,0x00F2}, +{0x2772A636,0x00F3}, +{0xE0CD0736,0x00F4}, +{0x5C08DA36,0x00F5}, +{0x02759236,0x00F6}, +{0xE23B1C36,0x00F7}, +{0x7DB1C836,0x00F8}, +{0x84C9D636,0x00F9}, +{0x21F62E36,0x00FA}, +{0x24A81136,0x00FB}, +{0x53ADB336,0x00FC}, +{0x27B02E36,0x00FD}, +{0xEAA9FB36,0x00FE}, +{0x36356036,0x00FF}, +{0xA7351A36,0x0100}, +{0xA3EBBA36,0x0101}, +{0xBA8DBA36,0x0102}, +{0x87EDE936,0x0103}, +{0xD82F9A36,0x0104}, +{0xB1580B36,0x0105}, +{0x816E8D36,0x0106}, +{0x6598DC36,0x0107}, +{0x8EA98636,0x0108}, +}; +errcode_t change_mac_from_chipinfo_map(uint32_t chipinfo_num) +{ + uint8_t bd_addr[BD_ADDR_LEN]={0}; + errcode_t ret; + for (int i=0 ; i< sizeof(g_chipinfo_map)/sizeof(chiinfo_mac_pair);i++) + { + + + if (g_chipinfo_map[i].chipinfo == chipinfo_num) + { + uint16_t btmac2 = g_chipinfo_map[i].mac; + bd_addr[5] = (btmac2&0x00FF) ; + bd_addr[4] = (btmac2&0xFF00) >>8 ; + bd_addr[3] = 0x01 ; + bd_addr[2] = 0x06 ; + bd_addr[1] = 0x11 ; + bd_addr[0] = 0x28 ; + ret = uapi_set_nv_btaddr(bd_addr, sizeof(bd_addr)); + if (ret != ERRCODE_SUCC) { + /* ERROR PROCESS */ + printf("found chipinfo 0x%08X and change btmac to 0xXXXXXX01%04X failed! ret %d\n", + g_chipinfo_map[i].chipinfo, + g_chipinfo_map[i].mac, + ret); + return ERRCODE_FAIL; + } else{ + printf("found chipinfo 0x%08X and change btmac to 0xXXXXXX01%04X success!\n", + g_chipinfo_map[i].chipinfo, + g_chipinfo_map[i].mac); + return ERRCODE_SUCC; + } + } + } + printf(" chipinfo 0x%08X not found !\n",chipinfo_num); + return ERRCODE_FAIL; +} +#endif \ No newline at end of file diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index 0171836ad..6322d8967 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -126,6 +126,12 @@ errcode_t uapi_get_btname(uint8_t *buf_btname, uint32_t *len_btname); errcode_t uapi_get_nv_btaddr(uint8_t *buf_btaddr, uint32_t *len_btaddr); errcode_t uapi_get_nv_btname(uint8_t *buf_btname, uint32_t *len_btname); +/* +cywee chipinfo 转换 btmac地址,确保之前被chipinfo激活的密钥,用bt mac仍然可以激活 +要在init_btaddr_btname之前执行 +*/ +errcode_t change_mac_from_chipinfo_map(uint32_t chipinfo_num); + errcode_t init_btaddr_btname(void); -- 2.17.1