add casts for btstack_memory gets, use getter/setter for enumerated flags to allow compilation with C++

This commit is contained in:
mila@ringwald.ch 2012-01-05 22:24:51 +00:00
parent bc64ca6239
commit 28ca2b4607
4 changed files with 34 additions and 18 deletions

View File

@ -428,7 +428,6 @@
isa = PBXProject;
buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "project" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,

View File

@ -82,7 +82,7 @@ hci_connection_t * connection_for_handle(hci_con_handle_t con_handle){
}
static void hci_connection_timeout_handler(timer_source_t *timer){
hci_connection_t * connection = linked_item_get_user(&timer->item);
hci_connection_t * connection = (hci_connection_t *) linked_item_get_user(&timer->item);
#ifdef HAVE_TIME
struct timeval tv;
gettimeofday(&tv, NULL);
@ -116,7 +116,7 @@ static void hci_connection_timestamp(hci_connection_t *connection){
* @return connection OR NULL, if no memory left
*/
static hci_connection_t * create_connection_for_addr(bd_addr_t addr){
hci_connection_t * conn = btstack_memory_hci_connection_get();
hci_connection_t * conn = (hci_connection_t *) btstack_memory_hci_connection_get();
if (!conn) return NULL;
BD_ADDR_COPY(conn->address, addr);
conn->con_handle = 0xffff;
@ -146,6 +146,15 @@ static hci_connection_t * connection_for_address(bd_addr_t address){
return NULL;
}
inline static void connectionSetAuthenticationFlags(hci_connection_t * conn, hci_authentication_flags_t flags){
conn->authentication_flags = (hci_authentication_flags_t)(conn->authentication_flags | flags);
}
inline static void connectionClearAuthenticationFlags(hci_connection_t * conn, hci_authentication_flags_t flags){
conn->authentication_flags = (hci_authentication_flags_t)(conn->authentication_flags & ~flags);
}
/**
* add authentication flags and reset timer
*/
@ -154,7 +163,7 @@ static void hci_add_connection_flags_for_flipped_bd_addr(uint8_t *bd_addr, hci_a
bt_flip_addr(addr, *(bd_addr_t *) bd_addr);
hci_connection_t * conn = connection_for_address(addr);
if (conn) {
conn->authentication_flags |= flags;
connectionSetAuthenticationFlags(conn, flags);
hci_connection_timestamp(conn);
}
}
@ -1052,7 +1061,7 @@ void hci_run(){
} else {
hci_send_cmd(&hci_link_key_request_negative_reply, connection->address);
}
connection->authentication_flags &= ~HANDLE_LINK_KEY_REQUEST;
connectionClearAuthenticationFlags(connection, HANDLE_LINK_KEY_REQUEST);
}
}

View File

@ -297,6 +297,15 @@ int l2cap_send_internal(uint16_t local_cid, uint8_t *data, uint16_t len){
return l2cap_send_prepared(local_cid, len);
}
static inline void channelStateVarSetFlag(l2cap_channel_t *channel, L2CAP_CHANNEL_STATE_VAR flag){
channel->state_var = (L2CAP_CHANNEL_STATE_VAR) (channel->state_var | flag);
}
static inline void channelStateVarClearFlag(l2cap_channel_t *channel, L2CAP_CHANNEL_STATE_VAR flag){
channel->state_var = (L2CAP_CHANNEL_STATE_VAR) (channel->state_var & ~flag);
}
// MARK: L2CAP_RUN
// process outstanding signaling tasks
@ -374,7 +383,7 @@ void l2cap_run(void){
case L2CAP_STATE_WILL_SEND_CONNECTION_RESPONSE_ACCEPT:
channel->state = L2CAP_STATE_CONFIG;
channel->state_var |= L2CAP_CHANNEL_STATE_VAR_SEND_CONF_REQ;
channelStateVarSetFlag(channel, L2CAP_CHANNEL_STATE_VAR_SEND_CONF_REQ);
l2cap_send_signaling_packet(channel->handle, CONNECTION_RESPONSE, channel->remote_sig_id, channel->local_cid, channel->remote_cid, 0, 0);
break;
@ -387,13 +396,13 @@ void l2cap_run(void){
case L2CAP_STATE_CONFIG:
if (channel->state_var & L2CAP_CHANNEL_STATE_VAR_SEND_CONF_RSP){
channel->state_var &= ~L2CAP_CHANNEL_STATE_VAR_SEND_CONF_RSP;
channel->state_var |= L2CAP_CHANNEL_STATE_VAR_SENT_CONF_RSP;
channelStateVarClearFlag(channel, L2CAP_CHANNEL_STATE_VAR_SEND_CONF_RSP);
channelStateVarSetFlag(channel, L2CAP_CHANNEL_STATE_VAR_SENT_CONF_RSP);
l2cap_send_signaling_packet(channel->handle, CONFIGURE_RESPONSE, channel->remote_sig_id, channel->remote_cid, 0, 0, 0, NULL);
}
else if (channel->state_var & L2CAP_CHANNEL_STATE_VAR_SEND_CONF_REQ){
channel->state_var &= ~L2CAP_CHANNEL_STATE_VAR_SEND_CONF_REQ;
channel->state_var |= L2CAP_CHANNEL_STATE_VAR_SENT_CONF_REQ;
channelStateVarClearFlag(channel, L2CAP_CHANNEL_STATE_VAR_SEND_CONF_REQ);
channelStateVarSetFlag(channel, L2CAP_CHANNEL_STATE_VAR_SENT_CONF_REQ);
channel->local_sig_id = l2cap_next_sig_id();
config_options[0] = 1; // MTU
config_options[1] = 2; // len param
@ -432,7 +441,7 @@ void l2cap_create_channel_internal(void * connection, btstack_packet_handler_t p
bd_addr_t address, uint16_t psm, uint16_t mtu){
// alloc structure
l2cap_channel_t * chan = btstack_memory_l2cap_channel_get();
l2cap_channel_t * chan = (l2cap_channel_t*) btstack_memory_l2cap_channel_get();
if (!chan) {
// emit error event
l2cap_channel_t dummy_channel;
@ -641,7 +650,7 @@ static void l2cap_handle_connection_request(hci_con_handle_t handle, uint8_t sig
}
// alloc structure
// log_info("l2cap_handle_connection_request register channel\n");
l2cap_channel_t * channel = btstack_memory_l2cap_channel_get();
l2cap_channel_t * channel = (l2cap_channel_t*) btstack_memory_l2cap_channel_get();
if (!channel){
// 0x0004 No resources available
l2cap_register_signaling_response(handle, CONNECTION_REQUEST, sig_id, 0x0004);
@ -765,7 +774,7 @@ void l2cap_signaling_handler_channel(l2cap_channel_t *channel, uint8_t *command)
// successful connection
channel->remote_cid = READ_BT_16(command, L2CAP_SIGNALING_COMMAND_DATA_OFFSET);
channel->state = L2CAP_STATE_CONFIG;
channel->state_var |= L2CAP_CHANNEL_STATE_VAR_SEND_CONF_REQ;
channelStateVarSetFlag(channel, L2CAP_CHANNEL_STATE_VAR_SEND_CONF_REQ);
break;
case 1:
// connection pending. get some coffee
@ -798,12 +807,12 @@ void l2cap_signaling_handler_channel(l2cap_channel_t *channel, uint8_t *command)
case L2CAP_STATE_CONFIG:
switch (code) {
case CONFIGURE_REQUEST:
channel->state_var |= L2CAP_CHANNEL_STATE_VAR_RCVD_CONF_REQ;
channel->state_var |= L2CAP_CHANNEL_STATE_VAR_SEND_CONF_RSP;
channelStateVarSetFlag(channel, L2CAP_CHANNEL_STATE_VAR_RCVD_CONF_REQ);
channelStateVarSetFlag(channel, L2CAP_CHANNEL_STATE_VAR_SEND_CONF_RSP);
l2cap_signaling_handle_configure_request(channel, command);
break;
case CONFIGURE_RESPONSE:
channel->state_var |= L2CAP_CHANNEL_STATE_VAR_RCVD_CONF_RSP;
channelStateVarSetFlag(channel, L2CAP_CHANNEL_STATE_VAR_RCVD_CONF_RSP);
break;
default:
break;
@ -982,7 +991,7 @@ void l2cap_register_service_internal(void *connection, btstack_packet_handler_t
// alloc structure
// TODO: emit error event
service = btstack_memory_l2cap_service_get();
service = (l2cap_service_t *) btstack_memory_l2cap_service_get();
if (!service) {
log_error("l2cap_register_service_internal: no memory for l2cap_service_t\n");
l2cap_emit_service_registered(connection, BTSTACK_MEMORY_ALLOC_FAILED, psm);

View File

@ -5,7 +5,6 @@ LD_LIBRARIES = -L$(CPPUTEST_HOME)/lib -lCppUTest -lCppUTestExt
VPATH=../src
DEPS = remote_device_db_memory.h
OBJ = memory_pool.o remote_device_db_memory_test.o remote_device_db_memory.o btstack_memory.o linked_list.o
remote-memory: $(OBJ)