daemon: checked gatt client state in discover primary services query

This commit is contained in:
mila@ringwald.ch 2014-05-08 09:20:19 +00:00
parent 20bb552905
commit 0a1abdbef4
2 changed files with 21 additions and 4 deletions

View File

@ -351,8 +351,10 @@ extern "C" {
#define ATT_HANDLE_VALUE_INDICATION_IN_PORGRESS 0x90
#define ATT_HANDLE_VALUE_INDICATION_TIMEOUT 0x91
#define GATT_CLIENT_BUSY 0x94
typedef enum {
BLE_PERIPHERAL_OK = 0x94,
BLE_PERIPHERAL_OK = 0xA0,
BLE_PERIPHERAL_IN_WRONG_STATE,
BLE_PERIPHERAL_DIFFERENT_CONTEXT_FOR_ADDRESS_ALREADY_EXISTS,
BLE_PERIPHERAL_NOT_CONNECTED,

View File

@ -407,15 +407,30 @@ static int btstack_command_handler(connection_t *connection, uint8_t *packet, ui
}
// check state
if (!gatt_client_is_ready(context)){
// TODO map BLE_PERIPHERAL errors to standard hci error codes
// send_gatt_service_query_complete(connection, handle, BTSTACK_MEMORY_ALLOC_FAILED);
send_gatt_service_query_complete(connection, handle, GATT_CLIENT_BUSY);
break;
}
context->context = connection;
gatt_client_discover_primary_services(context);
break;
}
// many more! ca 15
case GATT_DISCOVER_PRIMARY_SERVICES_BY_UUID16: break;
case GATT_DISCOVER_PRIMARY_SERVICES_BY_UUID128: break;
case GATT_FIND_INCLUDED_SERVICES_FOR_SERVICE: break;
case GATT_DISCOVER_CHARACTERISTICS_FOR_SERVICE: break;
case GATT_DISCOVER_CHARACTERISTICS_FOR_SERVICE_BY_UUID128: break;
case GATT_DISCOVER_CHARACTERISTIC_DESCRIPTOR: break;
case GATT_READ_VALUE_OF_CHARACTERISTIC: break;
case GATT_READ_LONG_VALUE_OF_CHARACTERISTIC: break;
case GATT_WRITE_VALUE_OF_CHARACTERISTIC_WITHOUT_RESPONSE: break;
case GATT_WRITE_VALUE_OF_CHARACTERISTIC: break;
case GATT_WRITE_LONG_VALUE_OF_CHARACTERISTIC: break;
case GATT_RELIABLE_WRITE_LONG_VALUE_OF_CHARACTERISTIC: break;
case GATT_READ_CHARACTERISTIC_DESCRIPTOR: break;
case GATT_READ_LONG_CHARACTERISTIC_DESCRIPTOR: break;
case GATT_WRITE_CHARACTERISTIC_DESCRIPTOR: break;
case GATT_WRITE_LONG_CHARACTERISTIC_DESCRIPTOR: break;
case GATT_WRITE_CLIENT_CHARACTERISTIC_CONFIGURATION: break;
#endif
default:
log_error("Error: command %u not implemented\n:", READ_CMD_OCF(packet));