diff --git a/tool/conversion_to_1.0.cocci b/tool/conversion_to_1.0.cocci deleted file mode 100644 index 139788633..000000000 --- a/tool/conversion_to_1.0.cocci +++ /dev/null @@ -1,23 +0,0 @@ -@@ -expression dest, src; -@@ -- bt_flip_addr(dest,src) -+ reverse_bd_addr(src, dest) - -@@ -expression handle; -@@ -- hci_remote_eSCO_supported(handle) -+ hci_remote_esco_supported(handle) - -@@ -expression event, cmd; -@@ -- COMMAND_COMPLETE_EVENT(event,cmd) -+ HCI_EVENT_IS_COMMAND_COMPLETE(event,cmd) - -@@ -expression event, cmd; -@@ -- COMMAND_STATUS_EVENT(event,cmd) -+ HCI_EVENT_IS_COMMAND_STATUS(event,cmd) diff --git a/tool/conversion_to_1.0.sh b/tool/conversion_to_1.0.sh deleted file mode 100644 index 82bc21552..000000000 --- a/tool/conversion_to_1.0.sh +++ /dev/null @@ -1,54 +0,0 @@ --e 's/SDP_EVENT_QUERY_COMPLETE/SDP_EVENT_QUERY_COMPLETE/g' --e 's/SDP_EVENT_QUERY_RFCOMM_SERVICE/SDP_EVENT_QUERY_RFCOMM_SERVICE/g' --e 's/SDP_EVENT_QUERY_ATTRIBUTE_BYTE/SDP_EVENT_QUERY_ATTRIBUTE_BYTE/g' --e 's/SDP_EVENT_QUERY_ATTRIBUTE_VALUE/SDP_EVENT_QUERY_ATTRIBUTE_VALUE/g' --e 's/SDP_EVENT_QUERY_SERVICE_RECORD_HANDLE/SDP_EVENT_QUERY_SERVICE_RECORD_HANDLE/g' --e 's/GATT_EVENT_QUERY_COMPLETE/GATT_EVENT_QUERY_COMPLETE/g' --e 's/GATT_EVENT_SERVICE_QUERY_RESULT/GATT_EVENT_SERVICE_QUERY_RESULT/g' --e 's/GATT_EVENT_CHARACTERISTIC_QUERY_RESULT/GATT_EVENT_CHARACTERISTIC_QUERY_RESULT/g' --e 's/GATT_EVENT_INCLUDED_SERVICE_QUERY_RESULT/GATT_EVENT_INCLUDED_SERVICE_QUERY_RESULT/g' --e 's/GATT_EVENT_ALL_CHARACTERISTIC_DESCRIPTORS_QUERY_RESULT/GATT_EVENT_ALL_CHARACTERISTIC_DESCRIPTORS_QUERY_RESULT/g' --e 's/GATT_EVENT_CHARACTERISTIC_VALUE_QUERY_RESULT/GATT_EVENT_CHARACTERISTIC_VALUE_QUERY_RESULT/g' --e 's/GATT_EVENT_LONG_CHARACTERISTIC_VALUE_QUERY_RESULT/GATT_EVENT_LONG_CHARACTERISTIC_VALUE_QUERY_RESULT/g' --e 's/GATT_EVENT_NOTIFICATION/GATT_EVENT_NOTIFICATION/g' --e 's/GATT_EVENT_INDICATION/GATT_EVENT_INDICATION/g' --e 's/GATT_EVENT_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT/GATT_EVENT_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT/g' --e 's/GATT_EVENT_LONG_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT/GATT_EVENT_LONG_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT/g' --e 's/GATT_EVENT_MTU/GATT_EVENT_MTU/g' --e 's/ATT_EVENT_MTU_EXCHANGE_COMPLETE/ATT_EVENT_MTU_EXCHANGE_COMPLETE/g' --e 's/ATT_EVENT_HANDLE_VALUE_INDICATION_COMPLETE/ATT_EVENT_HANDLE_VALUE_INDICATION_COMPLETE/g' --e 's/SM_EVENT_JUST_WORKS_REQUEST/SM_EVENT_JUST_WORKS_REQUEST/g' --e 's/SM_EVENT_JUST_WORKS_CANCEL/SM_EVENT_JUST_WORKS_CANCEL/g' --e 's/SM_EVENT_PASSKEY_DISPLAY_NUMBER/SM_EVENT_PASSKEY_DISPLAY_NUMBER/g' --e 's/SM_EVENT_PASSKEY_DISPLAY_CANCEL/SM_EVENT_PASSKEY_DISPLAY_CANCEL/g' --e 's/SM_EVENT_PASSKEY_INPUT_NUMBER/SM_EVENT_PASSKEY_INPUT_NUMBER/g' --e 's/SM_EVENT_PASSKEY_INPUT_CANCEL/SM_EVENT_PASSKEY_INPUT_CANCEL/g' --e 's/SM_EVENT_IDENTITY_RESOLVING_STARTED/SM_EVENT_IDENTITY_RESOLVING_STARTED/g' --e 's/SM_EVENT_IDENTITY_RESOLVING_FAILED/SM_EVENT_IDENTITY_RESOLVING_FAILED/g' --e 's/SM_EVENT_IDENTITY_RESOLVING_SUCCEEDED/SM_EVENT_IDENTITY_RESOLVING_SUCCEEDED/g' --e 's/SM_EVENT_AUTHORIZATION_REQUEST/SM_EVENT_AUTHORIZATION_REQUEST/g' --e 's/SM_EVENT_AUTHORIZATION_RESULT/SM_EVENT_AUTHORIZATION_RESULT/g' --e 's/GAP_EVENT_SECURITY_LEVEL/GAP_EVENT_SECURITY_LEVEL/g' --e 's/GAP_EVENT_DEDICATED_BONDING_COMPLETED/GAP_EVENT_DEDICATED_BONDING_COMPLETED/g' --e 's/GAP_EVENT_ADVERTISING_REPORT/GAP_EVENT_ADVERTISING_REPORT/g' --e 's/ANCS_EVENT_CLIENT_CONNECTED/ANCS_EVENT_CLIENT_CONNECTED/g' --e 's/ANCS_EVENT_CLIENT_NOTIFICATION/ANCS_EVENT_CLIENT_NOTIFICATION/g' --e 's/ANCS_EVENT_CLIENT_DISCONNECTED/ANCS_EVENT_CLIENT_DISCONNECTED/g' - - --- -#define READ_BT_16( buffer, pos) ( ((uint16_t) buffer[pos]) | (((uint16_t)buffer[(pos)+1]) << 8)) -#define READ_BT_24( buffer, pos) ( ((uint32_t) buffer[pos]) | (((uint32_t)buffer[(pos)+1]) << 8) | (((uint32_t)buffer[(pos)+2]) << 16)) -#define READ_BT_32( buffer, pos) ( ((uint32_t) buffer[pos]) | (((uint32_t)buffer[(pos)+1]) << 8) | (((uint32_t)buffer[(pos)+2]) << 16) | (((uint32_t) buffer[(pos)+3])) << 24) -#define READ_NET_16( buffer, pos) ( ((uint16_t) buffer[(pos)+1]) | (((uint16_t)buffer[ pos ]) << 8)) -#define READ_NET_32( buffer, pos) ( ((uint32_t) buffer[(pos)+3]) | (((uint32_t)buffer[(pos)+2]) << 8) | (((uint32_t)buffer[(pos)+1]) << 16) | (((uint32_t) buffer[pos])) << 24) -#define READ_L2CAP_LENGTH(buffer) ( READ_BT_16(buffer, 4)) -#define READ_L2CAP_CHANNEL_ID(buffer) ( READ_BT_16(buffer, 6)) -void bt_store_16(uint8_t *buffer, uint16_t pos, uint16_t value); -void bt_store_32(uint8_t *buffer, uint16_t pos, uint32_t value); -void net_store_16(uint8_t *buffer, uint16_t pos, uint16_t value); -void net_store_32(uint8_t *buffer, uint16_t pos, uint32_t value); - -find . -type f -print0 | xargs -0 sed -i -e 's/READ_BT_16/little_endian_read_16/g' -e 's/READ_BT_24/little_endian_read_24/g' -e 's/READ_BT_32/little_endian_read_32/g' -e 's/READ_NET_16/big_endian_read_16/g' -e 's/READ_NET_32/big_endian_read_32/g' -e 's/bt_store_16/little_endian_store_16/g' -e 's/bt_store_32/little_endian_store_32/g' -e 's/net_store_16/big_endian_store_16/g' -e 's/net_store_32/big_endian_store_32/g' - - diff --git a/tool/conversion_to_v1.0/conversion_to_1.0.sh b/tool/conversion_to_v1.0/conversion_to_1.0.sh new file mode 100755 index 000000000..e42d3806d --- /dev/null +++ b/tool/conversion_to_v1.0/conversion_to_1.0.sh @@ -0,0 +1,32 @@ +#!/bin/bash +set -e +set -u + +USAGE="Usage: conversion_to_1.0.sh src-path dest-path" + +echo "BTstack conversion to v1.0 helper" +echo "BlueKitchen GmbH, 2016" +echo + +# command line checks, bash +if [ $# -ne 2 ]; then + echo ${USAGE} + exit 0 +fi +SRC=$1 +DEST=$2 + +echo "Creating copy of $SRC at $DEST" +cp -r $SRC/ $DEST + +echo "Updating function calls" + +# simple function rename +find $DEST -type f -print0 | xargs -0 sed -i -f convert.sed + +# complext function rename using coccinelle +command -v spatch >/dev/null 2>&1 || { echo >&2 "spatch from cocinelle required but not installed. Aborting."; exit 1; } +spatch --sp-file convert.cocci --in-place --dir $DEST > /dev/null # 2>&1 +echo "Done. Good luck!" + + diff --git a/tool/conversion_to_v1.0/convert.cocci b/tool/conversion_to_v1.0/convert.cocci new file mode 100644 index 000000000..6f465ef69 --- /dev/null +++ b/tool/conversion_to_v1.0/convert.cocci @@ -0,0 +1,69 @@ +@@ +expression dest, src; +@@ +- bt_flip_addr(dest,src) ++ reverse_bd_addr(src, dest) + +@@ +expression handle; +@@ +- hci_remote_eSCO_supported(handle) ++ hci_remote_esco_supported(handle) + +@@ +expression packet_handler; +@@ +- hci_register_packet_handler(packet_handler); ++ static btstack_packet_callback_registration_t callback_registration; ++ callback_registration.callback = packet_handler; ++ hci_add_event_handler(&callback_registration); + +@@ +typedef uint8_t, uint16_t; +identifier fn, packet_type, packet, size; +@@ +- void fn(uint8_t packet_type, uint8_t * packet, uint16_t size) ++ void fn(uint8_t packet_type, uint16_t channel, uint8_t * packet, uint16_t size) +{ ... } + +@@ +// typedef uint8_t, uint16_t; +identifier fn, connection, packet_type, channel, packet, size; +@@ +- void fn(void * connection, uint8_t packet_type, uint16_t channel, uint8_t * packet, uint16_t size) ++ void fn(uint8_t packet_type, uint16_t channel, uint8_t * packet, uint16_t size) +{ ... } + +@@ +expression handle; +@@ +- hci_can_send_sco_packet_now(handle) ++ hci_can_send_sco_packet_now() + +@@ +expression uuid; +@@ +- printUUID128(uuid) ++ printf("%s", uuid128_to_str(uuid)) + +@@ +expression addr; +@@ +- print_bd_addr(addr) ++ printf("%s", bd_addr_to_str(addr)) + +@@ +expression str, addr; +typedef bd_addr_t; +@@ +- sscan_bd_addr((uint8_t*)str, addr) ++ sscanf_bd_addr(str, addr) + +@@ +typedef timer; +typedef btstack_timer_source_t; +identifier fn, ts; +@@ +- fn(struct timer * ts) ++ fn(btstack_timer_source_t * ts) +{ ... } diff --git a/tool/conversion_to_v1.0/convert.sed b/tool/conversion_to_v1.0/convert.sed new file mode 100644 index 000000000..41a3cb823 --- /dev/null +++ b/tool/conversion_to_v1.0/convert.sed @@ -0,0 +1,135 @@ +# sed script + +# DEFINES +s/ANCS_CLIENT_CONNECTED/ANCS_EVENT_CLIENT_CONNECTED/g +s/ANCS_CLIENT_DISCONNECTED/ANCS_EVENT_CLIENT_DISCONNECTED/g +s/ANCS_CLIENT_NOTIFICATION/ANCS_EVENT_CLIENT_NOTIFICATION/g +s/ATT_HANDLE_VALUE_INDICATION_COMPLETE/ATT_EVENT_HANDLE_VALUE_INDICATION_COMPLETE/g +s/ATT_MTU_EXCHANGE_COMPLETE/ATT_EVENT_MTU_EXCHANGE_COMPLETE/g +s/COMMAND_COMPLETE_EVENT/HCI_EVENT_IS_COMMAND_COMPLETE/g +s/COMMAND_STATUS_EVENT/HCI_EVENT_IS_COMMAND_STATUS/g +s/GAP_LE_ADVERTISING_REPORT/GAP_EVENT_ADVERTISING_REPORT/g +s/GAP_DEDICATED_BONDING_COMPLETED/GAP_EVENT_DEDICATED_BONDING_COMPLETED/g +s/GAP_SECURITY_LEVEL/GAP_EVENT_SECURITY_LEVEL/g +s/GATT_ALL_CHARACTERISTIC_DESCRIPTORS_QUERY_RESULT/GATT_EVENT_ALL_CHARACTERISTIC_DESCRIPTORS_QUERY_RESULT/g +s/GATT_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT/GATT_EVENT_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT/g +s/GATT_CHARACTERISTIC_QUERY_RESULT/GATT_EVENT_CHARACTERISTIC_QUERY_RESULT/g +s/GATT_CHARACTERISTIC_VALUE_QUERY_RESULT/GATT_EVENT_CHARACTERISTIC_VALUE_QUERY_RESULT/g +s/GATT_INCLUDED_SERVICE_QUERY_RESULT/GATT_EVENT_INCLUDED_SERVICE_QUERY_RESULT/g +s/GATT_INDICATION/GATT_EVENT_INDICATION/g +s/GATT_LONG_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT/GATT_EVENT_LONG_CHARACTERISTIC_DESCRIPTOR_QUERY_RESULT/g +s/GATT_LONG_CHARACTERISTIC_VALUE_QUERY_RESULT/GATT_EVENT_LONG_CHARACTERISTIC_VALUE_QUERY_RESULT/g +s/GATT_MTU/GATT_EVENT_MTU/g +s/GATT_NOTIFICATION/GATT_EVENT_NOTIFICATION/g +s/DAEMON_EVENT_HCI_PACKET_SENT/HCI_EVENT_TRANSPORT_PACKET_SENT/g +s/GATT_QUERY_COMPLETE/GATT_EVENT_QUERY_COMPLETE/g +s/GATT_SERVICE_QUERY_RESULT/GATT_EVENT_SERVICE_QUERY_RESULT/g +s/SDP_EVENT_QUERY_ATTRIBUTE_BYTE/SDP_EVENT_QUERY_ATTRIBUTE_BYTE/g +s/SDP_EVENT_QUERY_ATTRIBUTE_VALUE/SDP_EVENT_QUERY_ATTRIBUTE_VALUE/g +s/SDP_EVENT_QUERY_COMPLETE/SDP_EVENT_QUERY_COMPLETE/g +s/SDP_EVENT_QUERY_RFCOMM_SERVICE/SDP_EVENT_QUERY_RFCOMM_SERVICE/g +s/SDP_EVENT_QUERY_SERVICE_RECORD_HANDLE/SDP_EVENT_QUERY_SERVICE_RECORD_HANDLE/g +s/SM_EVENT_AUTHORIZATION_REQUEST/SM_EVENT_AUTHORIZATION_REQUEST/g +s/SM_EVENT_AUTHORIZATION_RESULT/SM_EVENT_AUTHORIZATION_RESULT/g +s/SM_EVENT_IDENTITY_RESOLVING_FAILED/SM_EVENT_IDENTITY_RESOLVING_FAILED/g +s/SM_EVENT_IDENTITY_RESOLVING_STARTED/SM_EVENT_IDENTITY_RESOLVING_STARTED/g +s/SM_EVENT_IDENTITY_RESOLVING_SUCCEEDED/SM_EVENT_IDENTITY_RESOLVING_SUCCEEDED/g +s/SM_EVENT_JUST_WORKS_CANCEL/SM_EVENT_JUST_WORKS_CANCEL/g +s/SM_EVENT_JUST_WORKS_REQUEST/SM_EVENT_JUST_WORKS_REQUEST/g +s/SM_EVENT_PASSKEY_DISPLAY_CANCEL/SM_EVENT_PASSKEY_DISPLAY_CANCEL/g +s/SM_EVENT_PASSKEY_DISPLAY_NUMBER/SM_EVENT_PASSKEY_DISPLAY_NUMBER/g +s/SM_EVENT_PASSKEY_INPUT_CANCEL/SM_EVENT_PASSKEY_INPUT_CANCEL/g +s/SM_EVENT_PASSKEY_INPUT_NUMBER/SM_EVENT_PASSKEY_INPUT_NUMBER/g +s/BTSTACK_EVENT_REMOTE_NAME_CACHED/DAEMON_EVENT_REMOTE_NAME_CACHED/g + +# Functions/Macros +s/att_server_can_send/att_server_can_send_packet_now/g +s/BD_ADDR_CMP/bd_addr_cmp/g +s/bt_store_16/little_endian_store_16/g +s/bt_store_24/little_endian_store_24/g +s/bt_store_32/little_endian_store_32/g +s/hci_discoverable_control/gap_discoverable_control/g +s/le_central_connect/gap_connect/g +s/le_central_connect_cancel/gap_connect_cancel/g +s/le_central_set_scan_parameters/gap_set_scan_parameters/g +s/le_central_start_scan/gap_start_scan/g +s/le_central_stop_scan/gap_stop_scan/g +s/net_store_16/big_endian_store_16/g +s/net_store_24/big_endian_store_24/g +s/net_store_32/big_endian_store_32/g +s/READ_BT_16/little_endian_read_16/g +s/READ_BT_24/little_endian_read_24/g +s/READ_BT_32/little_endian_read_32/g +s/READ_NET_16/big_endian_read_16/g +s/READ_NET_24/big_endian_read_24/g +s/READ_NET_32/big_endian_read_32/g +s/rfcomm_accept_connection_internal/rfcomm_accept_connection/g +s/rfcomm_register_service_internal/rfcomm_register_service/g +s/rfcomm_send_internal/rfcomm_send/g +s/rfcomm_disconnect_internal/rfcomm_disconnect/g +s/run_loop_add_timer/btstack_run_loop_add_timer/g +s/run_loop_get_time_ms/btstack_run_loop_get_time_ms/g +s/run_loop_set_timer/btstack_run_loop_set_timer/g +s/sdp_register_service_internal/sdp_register_service/g +s/swap32/reverse_32/g +s/swap48/reverse_48/g +s/swap64/reverse_64/g +s/swap128/reverse_128/g +s/hci_ssp_set_io_capability/gap_ssp_set_io_capability/g + +# Folder structure +s|/example/embedded|/example|g +s|/ble/compile-gatt.py|/tool/compile-gatt.py|g + +# type renames +s/le_service_t/gatt_client_service_t/g +s/le_characteristic_t/gatt_client_characteristic_t/g + +# header changes +s|"att.h"|"att_db.h"|g +s|"bnep.h"|"classic/bnep.h"|g +s|"gap_le.h"|"gap.h"|g +s|"hfp_ag.h"|"classic/hfp_ag.h"|g +s|"hfp_hf.h"|"classic/hfp_hf.h"|g +s|"hsp_ag.h"|"classic/hsp_ag.h"|g +s|"hsp_hs.h"|"classic/hsp_hs.h"|g +s|"pan.h"|"classic/pan.h"|g +s|"rfcomm.h"|"classic/rfcomm.h"|g +s|"sdp.h"|"classic/sdp_server.h"|g +s|"sdp_client.h"|"classic/sdp_client.h"|g +s|"sdp_parser.h"|"classic/sdp_client.h"|g +s|"sdp_query_rfcomm.h"|"classic/sdp_query_rfcomm.h"|g +s|#include "sdp_query_util.h"|// sdp_query_util doens not exist anymore|g +s||"hal_led.h"|g +s||"hci_cmd.h"|g +s||"btstack_run_loop.h"|g +s||"classic/sdp_util.h"|g +s||"btstack_util.h"|g + +# File renames +s|debug.h|btstack_debug.h|g +s|btstack-config.h|btstack_config.h|g +s|hci_cmds\.c|hci_cmd\.c|g +s|linked_list|btstack_linked_list|g +s|memory_pool|btstack_memory_pool|g +s|remote_device_db_memory|btstack_link_key_db_memory|g +s|run_loop\.c|btstack_run_loop\.c|g +s|timer_source_t|btstack_timer_source_t|g +s|sdp\.c|sdp_server\.c|g +s|utils|btstack_util|g +s|att\.c|att_db\.c|g +s|ancs_client_lib|ancs_client|g +s|sdp_parser.[c|o]||g +s|sdp_query_util.[c|o]||g + +# Makefile hacks: fix path to src/ble +s|/ble|/src/ble|g + +## might not work, due to very precise matching rules, or BTSTACK_ROOT not being used + +# Makefile hacks: add VPATH to src/classic +s|VPATH += ${BTSTACK_ROOT}/src$|VPATH += ${BTSTACK_ROOT}/src\nVPATH += ${BTSTACK_ROOT}/src/classic|g + +# Disable ancs_client BTstack examples +s|${CC} $(filter-out ancs_client.h,$^) ${CFLAGS} ${LDFLAGS} -o $@|echo ANCS Client target disabled by converstion script|g + diff --git a/tool/conversion_to_v1.0/convert.sh b/tool/conversion_to_v1.0/convert.sh new file mode 100755 index 000000000..cfb81671e --- /dev/null +++ b/tool/conversion_to_v1.0/convert.sh @@ -0,0 +1 @@ +./conversion_to_1.0.sh /Projects/btstack-master/example/embedded/ /Projects/btstack/example