rfcomm.c (f25e60dece291970e0c7612fc7fda3d74ae3ceba) | rfcomm.c (b93f89661ecd1d19be40311be96b92932960a800) |
---|---|
1/* 2 * Copyright (C) 2014 BlueKitchen GmbH 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright --- 904 unchanged lines hidden (view full) --- 913 914static void rfcomm_multiplexer_timer_handler(btstack_timer_source_t *timer){ 915 rfcomm_multiplexer_t * multiplexer = (rfcomm_multiplexer_t*) btstack_run_loop_get_timer_context(timer); 916 if (rfcomm_multiplexer_has_channels(multiplexer)) return; 917 918 log_info("handler timeout: shutting down multiplexer! (no channels)"); 919 uint16_t l2cap_cid = multiplexer->l2cap_cid; 920 rfcomm_multiplexer_finalize(multiplexer); | 1/* 2 * Copyright (C) 2014 BlueKitchen GmbH 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright --- 904 unchanged lines hidden (view full) --- 913 914static void rfcomm_multiplexer_timer_handler(btstack_timer_source_t *timer){ 915 rfcomm_multiplexer_t * multiplexer = (rfcomm_multiplexer_t*) btstack_run_loop_get_timer_context(timer); 916 if (rfcomm_multiplexer_has_channels(multiplexer)) return; 917 918 log_info("handler timeout: shutting down multiplexer! (no channels)"); 919 uint16_t l2cap_cid = multiplexer->l2cap_cid; 920 rfcomm_multiplexer_finalize(multiplexer); |
921 l2cap_disconnect(l2cap_cid, 0x13); | 921 l2cap_disconnect(l2cap_cid); |
922} 923 924static void rfcomm_multiplexer_prepare_idle_timer(rfcomm_multiplexer_t * multiplexer){ 925 if (multiplexer->timer_active) { 926 btstack_run_loop_remove_timer(&multiplexer->timer); 927 multiplexer->timer_active = 0; 928 } 929 if (rfcomm_multiplexer_has_channels(multiplexer)) return; --- 307 unchanged lines hidden (view full) --- 1237 rfcomm_multiplexer_set_state_and_request_can_send_now_event(multiplexer, RFCOMM_MULTIPLEXER_SEND_UA_0_AND_DISC); 1238 return 1; 1239 1240 case BT_RFCOMM_DM: 1241 // DM #0 - we shouldn't get this, just give up 1242 log_info("Received DM #0"); 1243 log_info("-> Closing down multiplexer"); 1244 rfcomm_multiplexer_finalize(multiplexer); | 922} 923 924static void rfcomm_multiplexer_prepare_idle_timer(rfcomm_multiplexer_t * multiplexer){ 925 if (multiplexer->timer_active) { 926 btstack_run_loop_remove_timer(&multiplexer->timer); 927 multiplexer->timer_active = 0; 928 } 929 if (rfcomm_multiplexer_has_channels(multiplexer)) return; --- 307 unchanged lines hidden (view full) --- 1237 rfcomm_multiplexer_set_state_and_request_can_send_now_event(multiplexer, RFCOMM_MULTIPLEXER_SEND_UA_0_AND_DISC); 1238 return 1; 1239 1240 case BT_RFCOMM_DM: 1241 // DM #0 - we shouldn't get this, just give up 1242 log_info("Received DM #0"); 1243 log_info("-> Closing down multiplexer"); 1244 rfcomm_multiplexer_finalize(multiplexer); |
1245 l2cap_disconnect(l2cap_cid, 0x13); | 1245 l2cap_disconnect(l2cap_cid); |
1246 return 1; 1247 1248 case BT_RFCOMM_UIH: 1249 if (payload_offset >= size) return 0; 1250 1251 if (packet[payload_offset] == BT_RFCOMM_CLD_CMD){ 1252 // Multiplexer close down (CLD) -> close mutliplexer 1253 log_info("Received Multiplexer close down command"); 1254 log_info("-> Closing down multiplexer"); 1255 rfcomm_multiplexer_finalize(multiplexer); | 1246 return 1; 1247 1248 case BT_RFCOMM_UIH: 1249 if (payload_offset >= size) return 0; 1250 1251 if (packet[payload_offset] == BT_RFCOMM_CLD_CMD){ 1252 // Multiplexer close down (CLD) -> close mutliplexer 1253 log_info("Received Multiplexer close down command"); 1254 log_info("-> Closing down multiplexer"); 1255 rfcomm_multiplexer_finalize(multiplexer); |
1256 l2cap_disconnect(l2cap_cid, 0x13); | 1256 l2cap_disconnect(l2cap_cid); |
1257 return 1; 1258 } 1259 switch (packet[payload_offset]){ 1260 case BT_RFCOMM_CLD_CMD: 1261 // Multiplexer close down (CLD) -> close mutliplexer 1262 log_info("Received Multiplexer close down command"); 1263 log_info("-> Closing down multiplexer"); 1264 rfcomm_multiplexer_finalize(multiplexer); | 1257 return 1; 1258 } 1259 switch (packet[payload_offset]){ 1260 case BT_RFCOMM_CLD_CMD: 1261 // Multiplexer close down (CLD) -> close mutliplexer 1262 log_info("Received Multiplexer close down command"); 1263 log_info("-> Closing down multiplexer"); 1264 rfcomm_multiplexer_finalize(multiplexer); |
1265 l2cap_disconnect(l2cap_cid, 0x13); | 1265 l2cap_disconnect(l2cap_cid); |
1266 return 1; 1267 1268 case BT_RFCOMM_FCON_CMD: 1269 multiplexer->fcon = 0x81; 1270 l2cap_request_can_send_now_event(multiplexer->l2cap_cid); 1271 return 1; 1272 1273 case BT_RFCOMM_FCOFF_CMD: --- 94 unchanged lines hidden (view full) --- 1368 break; 1369 case RFCOMM_MULTIPLEXER_SEND_UA_0_AND_DISC: 1370 log_info("Sending UA #0"); 1371 log_info("Closing down multiplexer"); 1372 multiplexer->state = RFCOMM_MULTIPLEXER_CLOSED; 1373 rfcomm_send_ua(multiplexer, 0); 1374 1375 rfcomm_multiplexer_finalize(multiplexer); | 1266 return 1; 1267 1268 case BT_RFCOMM_FCON_CMD: 1269 multiplexer->fcon = 0x81; 1270 l2cap_request_can_send_now_event(multiplexer->l2cap_cid); 1271 return 1; 1272 1273 case BT_RFCOMM_FCOFF_CMD: --- 94 unchanged lines hidden (view full) --- 1368 break; 1369 case RFCOMM_MULTIPLEXER_SEND_UA_0_AND_DISC: 1370 log_info("Sending UA #0"); 1371 log_info("Closing down multiplexer"); 1372 multiplexer->state = RFCOMM_MULTIPLEXER_CLOSED; 1373 rfcomm_send_ua(multiplexer, 0); 1374 1375 rfcomm_multiplexer_finalize(multiplexer); |
1376 l2cap_disconnect(l2cap_cid, 0x13); | 1376 l2cap_disconnect(l2cap_cid); |
1377 break; 1378 case RFCOMM_MULTIPLEXER_OPEN: 1379 // respond to test command 1380 if (multiplexer->test_data_len){ 1381 int len = multiplexer->test_data_len; 1382 log_info("Sending TEST Response with %u bytes", len); 1383 multiplexer->test_data_len = 0; 1384 rfcomm_send_uih_test_rsp(multiplexer, multiplexer->test_data, len); --- 1297 unchanged lines hidden --- | 1377 break; 1378 case RFCOMM_MULTIPLEXER_OPEN: 1379 // respond to test command 1380 if (multiplexer->test_data_len){ 1381 int len = multiplexer->test_data_len; 1382 log_info("Sending TEST Response with %u bytes", len); 1383 multiplexer->test_data_len = 0; 1384 rfcomm_send_uih_test_rsp(multiplexer, multiplexer->test_data, len); --- 1297 unchanged lines hidden --- |