mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-17 02:42:33 +00:00
test and fix for invalid mtk num completed packet event
This commit is contained in:
parent
1f479f8c7c
commit
cc9ea97c78
@ -51,6 +51,15 @@ static uint8_t adv_evt[] = {
|
|||||||
0xCE, 0xB5, 0x31, 0xF4, 0x05, 0x79, 0xb6, 0xbf, 0xc0
|
0xCE, 0xB5, 0x31, 0xF4, 0x05, 0x79, 0xb6, 0xbf, 0xc0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static uint8_t mtk_num_completed_evt[] ={
|
||||||
|
0x13 ,0x09, 0x02 ,0x01, 0x02 ,0x01, 0x00 ,0x01, 0x02 ,0x01, 0x00
|
||||||
|
};
|
||||||
|
|
||||||
|
static uint8_t num_completed_evt[] ={
|
||||||
|
0x13 ,0x09, 0x02 ,0x01, 0x02 ,0x01, 0x02, 0x01, 0x00, 0x01, 0x00
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
int dummy_callback(){
|
int dummy_callback(){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -133,6 +142,26 @@ static void fix_mtk_advertisement_report(uint8_t * packet, uint16_t size){
|
|||||||
memcpy(packet, fixed, size);
|
memcpy(packet, fixed, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void fix_mtk_num_completed_packets(uint8_t * packet, uint16_t size){
|
||||||
|
if (packet[0] != 0x13) return;
|
||||||
|
int num_handles = packet[2];
|
||||||
|
if (num_handles == 1) return;
|
||||||
|
|
||||||
|
uint8_t fixed[257];
|
||||||
|
|
||||||
|
// header is correct
|
||||||
|
memcpy(fixed, packet, 3);
|
||||||
|
|
||||||
|
int i;
|
||||||
|
for (i=0; i<num_handles;i++){
|
||||||
|
fixed[3 + i*2] = packet[3 + i*4];
|
||||||
|
fixed[3 + i*2 + 1] = packet[3 + i*4 + 1];
|
||||||
|
fixed[3 + num_handles * 2 + i * 2] = packet[3 + i*4 + 2];
|
||||||
|
fixed[3 + num_handles * 2 + i * 2 + 1] = packet[3 + i*4 + 3];
|
||||||
|
}
|
||||||
|
memcpy(packet, fixed, size);
|
||||||
|
}
|
||||||
|
|
||||||
TEST_GROUP(ADParser){
|
TEST_GROUP(ADParser){
|
||||||
void setup(){
|
void setup(){
|
||||||
hci_init(&dummy_transport, NULL, NULL, NULL);
|
hci_init(&dummy_transport, NULL, NULL, NULL);
|
||||||
@ -174,6 +203,14 @@ TEST(ADParser, TestFixMtkAdvertisingReport){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(ADParser, TestFixMtkNumCompletedPackets){
|
||||||
|
fix_mtk_num_completed_packets(mtk_num_completed_evt, sizeof(mtk_num_completed_evt));
|
||||||
|
int j;
|
||||||
|
for (j = 0; j < sizeof(mtk_num_completed_evt); j++){
|
||||||
|
CHECK_EQUAL(mtk_num_completed_evt[j], num_completed_evt[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TEST(ADParser, TestAdvertisementEventMultipleReports){
|
TEST(ADParser, TestAdvertisementEventMultipleReports){
|
||||||
le_handle_advertisement_report(adv_evt, sizeof(adv_evt));
|
le_handle_advertisement_report(adv_evt, sizeof(adv_evt));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user