static int execute_set_tx_frequency_arm(char *szPort, UINT8 carrier_on, UINT16 tx_frequency, int tx_power) { ComHelper SerialPort; if (!SerialPort.OpenPort(szPort)) { printf("Open %s port Failed\n", szPort); return 0; } int chan_num = tx_frequency - 2400; UINT8 hci_set_tx_frequency_arm[] = {0x01, 0x014, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; UINT8 hci_set_tx_frequency_arm_cmd_complete_event[] = {0x04, 0x0e, 0x04, 0x01, 0x014, 0xfc, 0x00}; hci_set_tx_frequency_arm[4] = (carrier_on == 0) ? 1 : 0; hci_set_tx_frequency_arm[5] = (carrier_on == 1) ? chan_num : 2; hci_set_tx_frequency_arm[6] = 0; // unmodulated hci_set_tx_frequency_arm[7] = 0; // modulation type hci_set_tx_frequency_arm[8] = (carrier_on == 1) ? 8 : 0; hci_set_tx_frequency_arm[9] = tx_power; printf ("Sending HCI Command:\n"); HexDump(hci_set_tx_frequency_arm, sizeof(hci_set_tx_frequency_arm)); // write HCI reset SerialPort.Write(hci_set_tx_frequency_arm, sizeof(hci_set_tx_frequency_arm)); // read HCI response header DWORD dwRead = SerialPort.Read((LPBYTE)&in_buffer[0], 3); // read HCI response payload if (dwRead == 3 && in_buffer[2] > 0) dwRead += SerialPort.Read((LPBYTE)&in_buffer[3], in_buffer[2]); printf ("Received HCI Event:\n"); HexDump(in_buffer, dwRead); if (dwRead == sizeof(hci_set_tx_frequency_arm_cmd_complete_event)) { if (memcmp(in_buffer, hci_set_tx_frequency_arm_cmd_complete_event, dwRead) == 0) { printf ("Success\n"); return 1; } } return FALSE; }
static int execute_le_transmitter_test(char *szPort, UINT8 chan_number, UINT8 length, UINT8 pattern) { ComHelper SerialPort; if (!SerialPort.OpenPort(szPort)) { printf("Open %s port Failed\n", szPort); return 0; } UINT8 hci_le_transmitter_test[] = {0x01, 0x01E, 0x20, 0x03, 0x00, 0x00, 0x00}; UINT8 hci_le_transmitter_test_cmd_complete_event[] = {0x04, 0x0e, 0x04, 0x01, 0x01E, 0x20, 0x00}; hci_le_transmitter_test[4] = chan_number; hci_le_transmitter_test[5] = length; hci_le_transmitter_test[6] = pattern; printf ("Sending HCI Command:\n"); HexDump(hci_le_transmitter_test, sizeof(hci_le_transmitter_test)); // write HCI reset SerialPort.Write(hci_le_transmitter_test, sizeof(hci_le_transmitter_test)); // read HCI response header DWORD dwRead = SerialPort.Read((LPBYTE)&in_buffer[0], 3); // read HCI response payload if (dwRead == 3 && in_buffer[2] > 0) dwRead += SerialPort.Read((LPBYTE)&in_buffer[3], in_buffer[2]); printf ("Received HCI Event:\n"); HexDump(in_buffer, dwRead); if (dwRead == sizeof(hci_le_transmitter_test_cmd_complete_event)) { if (memcmp(in_buffer, hci_le_transmitter_test_cmd_complete_event, dwRead) == 0) { printf("Success\n"); printf("LE Transmitter Test running, to stop execute le_test_end\n"); return 1; } } return FALSE; }
static int execute_le_test_end(char *szPort) { ComHelper SerialPort; if (!SerialPort.OpenPort(szPort)) { printf("Open %s port Failed\n", szPort); return 0; } UINT8 hci_le_test_end[] = {0x01, 0x1f, 0x20, 0x00}; UINT8 hci_le_test_end_cmd_complete_event[] = {0x04, 0x0e, 0x06, 0x01, 0x1f, 0x20, 0x00}; printf ("Sending HCI Command:\n"); HexDump(hci_le_test_end, sizeof(hci_le_test_end)); // write HCI reset SerialPort.Write(hci_le_test_end, sizeof(hci_le_test_end)); // read HCI response header DWORD dwRead = SerialPort.Read((LPBYTE)&in_buffer[0], 3); // read HCI response payload if (dwRead == 3 && in_buffer[2] > 0) dwRead += SerialPort.Read((LPBYTE)&in_buffer[3], in_buffer[2]); printf ("Received HCI Event:\n"); HexDump(in_buffer, dwRead); if ((dwRead > sizeof(hci_le_test_end_cmd_complete_event)) && (memcmp(in_buffer, hci_le_test_end_cmd_complete_event, sizeof(hci_le_test_end_cmd_complete_event)) == 0)) { printf("Success num_packets_received %d\n", in_buffer[7] + (in_buffer[8] << 8)); return TRUE; } else { return FALSE; } }
static int execute_reset(char *szPort) { ComHelper SerialPort; if (!SerialPort.OpenPort(szPort)) { printf("Open %s port Failed\n", szPort); return 0; } UINT8 hci_reset[] = {0x01, 0x03, 0x0c, 0x00}; UINT8 hci_reset_cmd_complete_event[] = {0x04, 0x0e, 0x04, 0x01, 0x03, 0x0c, 0x00}; printf ("Sending HCI Command:\n"); HexDump(hci_reset, sizeof(hci_reset)); // write HCI reset SerialPort.Write(hci_reset, sizeof(hci_reset)); // read HCI response header DWORD dwRead = SerialPort.Read((LPBYTE)&in_buffer[0], 3); // read HCI response payload if (dwRead == 3 && in_buffer[2] > 0) dwRead += SerialPort.Read((LPBYTE)&in_buffer[3], in_buffer[2]); printf ("Received HCI Event:\n"); HexDump(in_buffer, dwRead); if (dwRead == sizeof(hci_reset_cmd_complete_event)) { if (memcmp(in_buffer, hci_reset_cmd_complete_event, dwRead) == 0) { printf ("Success\n"); return 1; } } return 0; }