mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-02-03 20:54:18 +00:00
mesh: provisioning device, adapt for gatt
This commit is contained in:
parent
0214327469
commit
2bf4d0f45f
@ -345,8 +345,12 @@ static void packet_handler(uint8_t packet_type, uint16_t channel, uint8_t *packe
|
||||
if (con_handle == HCI_CON_HANDLE_INVALID) return;
|
||||
buffer[0] = (MESH_MSG_SAR_FIELD_COMPLETE_MSG << 6) | MESH_MSG_TYPE_PROVISIONING_PDU;
|
||||
memcpy(&buffer[1], proxy_pdu, proxy_pdu_size);
|
||||
printf("sending packet, size %d, MTU %d: ", proxy_pdu_size, att_server_get_mtu(con_handle));
|
||||
printf_hexdump(proxy_pdu, proxy_pdu_size);
|
||||
printf("\n");
|
||||
// TODO: check MTU and segment msg if needed
|
||||
mesh_provisioning_service_server_send_proxy_pdu(con_handle, buffer, proxy_pdu_size+1);
|
||||
// TODO: emit MESH_PBV_ADV_SEND_COMPLETE
|
||||
pb_adv_emit_pdu_sent(0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -129,6 +129,10 @@ int btstack_main(void){
|
||||
hci_event_callback_registration.callback = &packet_handler;
|
||||
hci_add_event_handler(&hci_event_callback_registration);
|
||||
|
||||
// crypto
|
||||
btstack_crypto_init();
|
||||
|
||||
// l2cap
|
||||
l2cap_init();
|
||||
|
||||
// setup le device db
|
||||
|
@ -370,35 +370,43 @@ static void provisioning_public_key_exchange_complete(void){
|
||||
}
|
||||
|
||||
static void provisioning_run(void){
|
||||
printf("provisioning_run: state %x, wait for outgoing complete %u\n", device_state, prov_waiting_for_outgoing_complete);
|
||||
if (prov_waiting_for_outgoing_complete) return;
|
||||
int start_timer = 1;
|
||||
switch (device_state){
|
||||
case DEVICE_SEND_ERROR:
|
||||
start_timer = 0; // game over
|
||||
prov_waiting_for_outgoing_complete = 1;
|
||||
provisioning_send_provisioning_error();
|
||||
provisioning_done();
|
||||
break;
|
||||
case DEVICE_SEND_CAPABILITIES:
|
||||
provisioning_send_capabilites();
|
||||
device_state = DEVICE_W4_START;
|
||||
prov_waiting_for_outgoing_complete = 1;
|
||||
provisioning_send_capabilites();
|
||||
break;
|
||||
case DEVICE_SEND_INPUT_COMPLETE:
|
||||
provisioning_send_input_complete();
|
||||
device_state = DEVICE_W4_CONFIRM;
|
||||
prov_waiting_for_outgoing_complete = 1;
|
||||
provisioning_send_input_complete();
|
||||
break;
|
||||
case DEVICE_SEND_PUB_KEY:
|
||||
prov_waiting_for_outgoing_complete = 1;
|
||||
provisioning_send_public_key();
|
||||
provisioning_public_key_exchange_complete();
|
||||
break;
|
||||
case DEVICE_SEND_CONFIRM:
|
||||
provisioning_send_confirm();
|
||||
device_state = DEVICE_W4_RANDOM;
|
||||
prov_waiting_for_outgoing_complete = 1;
|
||||
provisioning_send_confirm();
|
||||
break;
|
||||
case DEVICE_SEND_RANDOM:
|
||||
provisioning_send_random();
|
||||
device_state = DEVICE_W4_DATA;
|
||||
prov_waiting_for_outgoing_complete = 1;
|
||||
provisioning_send_random();
|
||||
break;
|
||||
case DEVICE_SEND_COMPLETE:
|
||||
prov_waiting_for_outgoing_complete = 1;
|
||||
provisioning_send_complete();
|
||||
provisioning_done();
|
||||
break;
|
||||
@ -408,7 +416,6 @@ static void provisioning_run(void){
|
||||
if (start_timer){
|
||||
provisioning_timer_start();
|
||||
}
|
||||
prov_waiting_for_outgoing_complete = 1;
|
||||
}
|
||||
|
||||
static void provisioning_handle_provisioning_error(uint8_t error_code){
|
||||
@ -509,8 +516,10 @@ static void provisioning_handle_public_key_dhkey(void * arg){
|
||||
provisioning_public_key_exchange_complete();
|
||||
} else {
|
||||
// queue public key pdu
|
||||
printf("DEVICE_SEND_PUB_KEY\n");
|
||||
device_state = DEVICE_SEND_PUB_KEY;
|
||||
}
|
||||
provisioning_run();
|
||||
}
|
||||
|
||||
static void provisioning_handle_public_key(uint8_t *packet, uint16_t size){
|
||||
|
Loading…
x
Reference in New Issue
Block a user