added btstack_get_version

This commit is contained in:
matthias.ringwald 2010-01-09 11:01:23 +00:00
parent 19b25e5f75
commit 1b0e3922ba
5 changed files with 39 additions and 4 deletions

View File

@ -103,6 +103,9 @@
// data: none
#define BTSTACK_EVENT_POWERON_FAILED 0x62
// data: majot (8), minor (8), revision(16)
#define BTSTACK_EVENT_VERSION 0x63
// data: event (8), len(8), status (8), address(48), handle (16), psm (16), source_cid(16), dest_cid (16)
#define L2CAP_EVENT_CHANNEL_OPENED 0x70
@ -191,6 +194,8 @@ extern hci_cmd_t hci_write_simple_pairing_mode;
extern hci_cmd_t btstack_get_state;
extern hci_cmd_t btstack_set_power_mode;
extern hci_cmd_t btstack_set_acl_capture_mode;
extern hci_cmd_t btstack_get_version;
// L2CAP client/server commands - see l2cap.c for info on parameters
extern hci_cmd_t l2cap_create_channel;
extern hci_cmd_t l2cap_disconnect;

View File

@ -115,6 +115,9 @@ static int btstack_command_handler(connection_t *connection, uint8_t *packet, ui
l2cap_set_capture_connection(NULL);
}
break;
case BTSTACK_GET_VERSION:
hci_emit_btstack_version();
break;
case L2CAP_CREATE_CHANNEL:
bt_flip_addr(addr, &packet[3]);
psm = READ_BT_16(packet, 9);

View File

@ -43,6 +43,8 @@
#include "hci.h"
#include "hci_dump.h"
#include <btstack/version.h>
// temp
#include "l2cap.h"
@ -434,7 +436,7 @@ void hci_emit_state(){
uint8_t len = 3;
uint8_t event[len];
event[0] = BTSTACK_EVENT_STATE;
event[1] = 1;
event[1] = len - 3;
event[2] = hci_stack.state;
hci_dump_packet( HCI_EVENT_PACKET, 0, event, len);
hci_stack.event_packet_handler(event, len);
@ -444,6 +446,7 @@ void hci_emit_connection_complete(hci_connection_t *conn){
uint8_t len = 13;
uint8_t event[len];
event[0] = HCI_EVENT_CONNECTION_COMPLETE;
event[1] = len - 3;
event[2] = 0; // status = OK
bt_store_16(event, 3, conn->con_handle);
bt_flip_addr(&event[5], conn->address);
@ -457,7 +460,7 @@ void hci_emit_l2cap_check_timeout(hci_connection_t *conn){
uint8_t len = 4;
uint8_t event[len];
event[0] = L2CAP_EVENT_TIMEOUT_CHECK;
event[1] = 2;
event[1] = len - 2;
bt_store_16(event, 2, conn->con_handle);
hci_dump_packet( HCI_EVENT_PACKET, 0, event, len);
hci_stack.event_packet_handler(event, len);
@ -467,16 +470,31 @@ void hci_emit_nr_connections_changed(){
uint8_t len = 3;
uint8_t event[len];
event[0] = BTSTACK_EVENT_NR_CONNECTIONS_CHANGED;
event[1] = 1;
event[1] = len - 2;
event[2] = nr_hci_connections();
hci_dump_packet( HCI_EVENT_PACKET, 0, event, len);
hci_stack.event_packet_handler(event, len);
}
void hci_emit_hci_open_failed(){
uint8_t len = 1;
uint8_t len = 2;
uint8_t event[len];
event[0] = BTSTACK_EVENT_POWERON_FAILED;
event[1] = len - 2;
hci_dump_packet( HCI_EVENT_PACKET, 0, event, len);
hci_stack.event_packet_handler(event, len);
}
void hci_emit_btstack_version() {
uint8_t len = 6;
uint8_t event[len];
event[0] = BTSTACK_EVENT_VERSION;
event[1] = len - 2;
event[len++] = BTSTACK_MAJOR;
event[len++] = BTSTACK_MINOR;
bt_store_16(event, len, BTSTACK_REVISION);
hci_dump_packet( HCI_EVENT_PACKET, 0, event, len);
hci_stack.event_packet_handler(event, len);
}

View File

@ -70,6 +70,9 @@
// set capture mode: @param on
#define BTSTACK_SET_ACL_CAPTURE_MODE 0x03
// get BTstack version
#define BTSTACK_GET_VERSION 0x04
// create l2cap channel: @param bd_addr(48), psm (16)
#define L2CAP_CREATE_CHANNEL 0x20
@ -197,3 +200,5 @@ void hci_emit_connection_complete(hci_connection_t *conn);
void hci_emit_l2cap_check_timeout(hci_connection_t *conn);
void hci_emit_nr_connections_changed();
void hci_emit_hci_open_failed();
void hci_emit_btstack_version();

View File

@ -267,6 +267,10 @@ OPCODE(OGF_BTSTACK, BTSTACK_SET_ACL_CAPTURE_MODE), "1"
// mode: 0 = off, 1 = on
};
hci_cmd_t btstack_get_version = {
OPCODE(OGF_BTSTACK, BTSTACK_GET_VERSION), ""
};
hci_cmd_t l2cap_create_channel = {
OPCODE(OGF_BTSTACK, L2CAP_CREATE_CHANNEL), "B2"
// @param bd_addr(48), psm (16)