clang-format

This commit is contained in:
embr 2023-04-24 16:23:41 +02:00
parent b3e6051b8e
commit bdeb2b85e7
7 changed files with 127 additions and 102 deletions

11
.clang-format Normal file
View file

@ -0,0 +1,11 @@
---
BasedOnStyle: WebKit
IndentWidth: 4
TabWidth: 4
UseTab: Always
---
Language: Cpp
BreakBeforeBraces: Attach
# this doesn't come out until clang-format 15 :(
#InsertBraces: true

View file

@ -2,6 +2,6 @@
pkgs.mkShell { pkgs.mkShell {
buildInputs = with pkgs; [ buildInputs = with pkgs; [
cmake cmakeCurses ninja python3 gcc-arm-embedded cmake cmakeCurses ninja python3 gcc-arm-embedded
picotool picotool clang-tools
]; ];
} }

View file

@ -28,7 +28,7 @@
// Enable and configure HCI Controller to Host Flow Control to avoid cyw43 shared bus overrun // Enable and configure HCI Controller to Host Flow Control to avoid cyw43 shared bus overrun
#define ENABLE_HCI_CONTROLLER_TO_HOST_FLOW_CONTROL #define ENABLE_HCI_CONTROLLER_TO_HOST_FLOW_CONTROL
#define HCI_HOST_ACL_PACKET_LEN (255+4) #define HCI_HOST_ACL_PACKET_LEN (255 + 4)
#define HCI_HOST_ACL_PACKET_NUM 3 #define HCI_HOST_ACL_PACKET_NUM 3
#define HCI_HOST_SCO_PACKET_LEN 120 #define HCI_HOST_SCO_PACKET_LEN 120
#define HCI_HOST_SCO_PACKET_NUM 3 #define HCI_HOST_SCO_PACKET_NUM 3

View file

@ -1,15 +1,15 @@
#include <stdio.h>
#include "btstack.h" #include "btstack.h"
#include "hci_dump.h" #include "hci_dump.h"
#include "hci_dump_segger_rtt_stdout.h" #include "hci_dump_segger_rtt_stdout.h"
#include "pico/cyw43_arch.h"
#include "pico/btstack_cyw43.h" #include "pico/btstack_cyw43.h"
#include "pico/cyw43_arch.h"
#include "pico/stdlib.h" #include "pico/stdlib.h"
#include "stdio_rtt.h" #include "stdio_rtt.h"
#include "vibe_bt.h" #include "vibe_bt.h"
#include <stdio.h>
#ifndef CYW43_WL_GPIO_LED_PIN #ifndef CYW43_WL_GPIO_LED_PIN
#error no WiFi LED on board, wrong -DPICO_BOARD? #error no WiFi LED on board, wrong -DPICO_BOARD?
#endif #endif
#define HEARTBEAT_PERIOD_MS 100 #define HEARTBEAT_PERIOD_MS 100
@ -17,42 +17,42 @@
static btstack_timer_source_t heartbeat; static btstack_timer_source_t heartbeat;
static btstack_packet_callback_registration_t hci_event_callback_registration; static btstack_packet_callback_registration_t hci_event_callback_registration;
static void heartbeat_handler(struct btstack_timer_source *ts) { static void heartbeat_handler(struct btstack_timer_source* ts) {
cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, bt_connected); cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, bt_connected);
// Restart timer // Restart timer
btstack_run_loop_set_timer(ts, HEARTBEAT_PERIOD_MS); btstack_run_loop_set_timer(ts, HEARTBEAT_PERIOD_MS);
btstack_run_loop_add_timer(ts); btstack_run_loop_add_timer(ts);
} }
int main() { int main() {
stdio_init_all(); stdio_init_all();
stdio_rtt_init(); stdio_rtt_init();
if (cyw43_arch_init()) { if (cyw43_arch_init()) {
printf("CYW43 init failed"); printf("CYW43 init failed");
return -1; return -1;
} }
// hci_dump_init(hci_dump_segger_rtt_stdout_get_instance()); // hci_dump_init(hci_dump_segger_rtt_stdout_get_instance());
l2cap_init(); l2cap_init();
sm_init(); sm_init();
att_server_init(profile_data, bt_att_read_callback, bt_att_write_callback); att_server_init(profile_data, bt_att_read_callback, bt_att_write_callback);
hci_event_callback_registration.callback = &bt_packet_handler;
hci_add_event_handler(&hci_event_callback_registration);
// register for ATT event
att_server_register_packet_handler(bt_packet_handler);
// set one-shot btstack timer hci_event_callback_registration.callback = &bt_packet_handler;
heartbeat.process = &heartbeat_handler; hci_add_event_handler(&hci_event_callback_registration);
btstack_run_loop_set_timer(&heartbeat, HEARTBEAT_PERIOD_MS); // register for ATT event
btstack_run_loop_add_timer(&heartbeat); att_server_register_packet_handler(bt_packet_handler);
// turn on bluetooth! // set one-shot btstack timer
hci_power_control(HCI_POWER_ON); heartbeat.process = &heartbeat_handler;
btstack_run_loop_set_timer(&heartbeat, HEARTBEAT_PERIOD_MS);
btstack_run_loop_add_timer(&heartbeat);
btstack_run_loop_execute(); // turn on bluetooth!
return 0; hci_power_control(HCI_POWER_ON);
btstack_run_loop_execute();
return 0;
} }

View file

@ -1,20 +1,20 @@
#include "pico/stdio/driver.h"
#include "stdio_rtt.h" #include "stdio_rtt.h"
#include "SEGGER_RTT.h" #include "SEGGER_RTT.h"
#include "pico/stdio/driver.h"
void stdio_rtt_init(void) { void stdio_rtt_init(void) {
stdio_set_driver_enabled(&stdio_rtt, true); stdio_set_driver_enabled(&stdio_rtt, true);
} }
static void stdio_rtt_out_chars(const char *buf, int length) { static void stdio_rtt_out_chars(const char* buf, int length) {
SEGGER_RTT_Write(0, buf, length); SEGGER_RTT_Write(0, buf, length);
} }
static int stdio_rtt_in_chars(char *buf, int length) { static int stdio_rtt_in_chars(char* buf, int length) {
return SEGGER_RTT_Read(0, buf, length); return SEGGER_RTT_Read(0, buf, length);
} }
stdio_driver_t stdio_rtt = { stdio_driver_t stdio_rtt = {
.out_chars = stdio_rtt_out_chars, .out_chars = stdio_rtt_out_chars,
.in_chars = stdio_rtt_in_chars, .in_chars = stdio_rtt_in_chars,
}; };

View file

@ -1,48 +1,58 @@
#include <stdio.h>
#include "vibe_bt.h" #include "vibe_bt.h"
#include "vibe.h" #include "vibe.h"
#include <stdio.h>
#define APP_AD_FLAGS 0x06 #define APP_AD_FLAGS 0x06
/* clang-format off */
static const uint8_t adv_data[] = { static const uint8_t adv_data[] = {
// Flags general discoverable // Flags general discoverable
0x02, BLUETOOTH_DATA_TYPE_FLAGS, APP_AD_FLAGS, 0x02,
// Name BLUETOOTH_DATA_TYPE_FLAGS,
0x0E, BLUETOOTH_DATA_TYPE_COMPLETE_LOCAL_NAME, 's', 'a', 'k', 'u', 'r', 'a', 'n', 'e', 'k', 'o', '-', '0', '3', APP_AD_FLAGS,
// Name
0x0E,
BLUETOOTH_DATA_TYPE_COMPLETE_LOCAL_NAME,
's', 'a', 'k', 'u', 'r', 'a', 'n', 'e', 'k', 'o', '-', '0', '3',
}; };
static const uint8_t adv_data_len = sizeof(adv_data); static const uint8_t adv_data_len = sizeof(adv_data);
bool bt_connected = false; bool bt_connected = false;
void bt_packet_handler( void bt_packet_handler(
uint8_t packet_type, uint8_t packet_type,
uint16_t channel, uint16_t channel,
uint8_t *packet, uint8_t* packet,
uint16_t size) uint16_t size)
{ {
UNUSED(size); UNUSED(size);
UNUSED(channel); UNUSED(channel);
bd_addr_t local_addr; bd_addr_t local_addr;
if (packet_type != HCI_EVENT_PACKET) return; if (packet_type != HCI_EVENT_PACKET)
return;
uint8_t event_type = hci_event_packet_get_type(packet); uint8_t event_type = hci_event_packet_get_type(packet);
switch(event_type){ switch (event_type) {
case BTSTACK_EVENT_STATE: case BTSTACK_EVENT_STATE:
if (btstack_event_state_get_state(packet) != HCI_STATE_WORKING) return; if (btstack_event_state_get_state(packet) != HCI_STATE_WORKING)
gap_local_bd_addr(local_addr); return;
printf("BTstack up and running on %s.\n", bd_addr_to_str(local_addr)); gap_local_bd_addr(local_addr);
printf("BTstack up and running on %s.\n", bd_addr_to_str(local_addr));
// setup advertisements // setup advertisements
uint16_t adv_int_min = 800; uint16_t adv_int_min = 800;
uint16_t adv_int_max = 800; uint16_t adv_int_max = 800;
uint8_t adv_type = 0; uint8_t adv_type = 0;
bd_addr_t null_addr; bd_addr_t null_addr;
memset(null_addr, 0, 6); memset(null_addr, 0, 6);
gap_advertisements_set_params(adv_int_min, adv_int_max, adv_type, 0, null_addr, 0x07, 0x00); gap_advertisements_set_params(adv_int_min, adv_int_max, adv_type, 0, null_addr, 0x07, 0x00);
assert(adv_data_len <= 31); // ble limitation assert(adv_data_len <= 31); // ble limitation
gap_advertisements_set_data(adv_data_len, (uint8_t*) adv_data); gap_advertisements_set_data(adv_data_len, (uint8_t*)adv_data);
gap_advertisements_enable(1); gap_advertisements_enable(1);
break; break;
case HCI_EVENT_LE_META: case HCI_EVENT_LE_META:
switch (hci_event_le_meta_get_subevent_code(packet)) { switch (hci_event_le_meta_get_subevent_code(packet)) {
case HCI_SUBEVENT_LE_CONNECTION_COMPLETE: case HCI_SUBEVENT_LE_CONNECTION_COMPLETE:
bt_connected = true; bt_connected = true;
@ -51,19 +61,19 @@ void bt_packet_handler(
break; break;
} }
break; break;
case HCI_EVENT_DISCONNECTION_COMPLETE: case HCI_EVENT_DISCONNECTION_COMPLETE:
bt_connected = false; bt_connected = false;
break; break;
default: default:
break; break;
} }
} }
uint16_t bt_att_read_callback( uint16_t bt_att_read_callback(
hci_con_handle_t connection_handle, hci_con_handle_t connection_handle,
uint16_t att_handle, uint16_t att_handle,
uint16_t offset, uint16_t offset,
uint8_t * buffer, uint8_t* buffer,
uint16_t buffer_size) uint16_t buffer_size)
{ {
printf("GATT Read %d\n", att_handle); printf("GATT Read %d\n", att_handle);
@ -71,11 +81,11 @@ uint16_t bt_att_read_callback(
} }
int bt_att_write_callback( int bt_att_write_callback(
hci_con_handle_t connection_handle, hci_con_handle_t connection_handle,
uint16_t att_handle, uint16_t att_handle,
uint16_t transaction_mode, uint16_t transaction_mode,
uint16_t offset, uint16_t offset,
uint8_t *buffer, uint8_t* buffer,
uint16_t buffer_size) uint16_t buffer_size)
{ {
printf("GATT Write %d, %db: ", att_handle, buffer_size); printf("GATT Write %d, %db: ", att_handle, buffer_size);
@ -83,13 +93,17 @@ int bt_att_write_callback(
printf("%02x ", buffer[i]); printf("%02x ", buffer[i]);
putchar('\n'); putchar('\n');
if (att_handle != ATT_CHARACTERISTIC_0000ffe1_0000_1000_8000_00805f9b34fb_01_VALUE_HANDLE) return 0; if (att_handle != ATT_CHARACTERISTIC_0000ffe1_0000_1000_8000_00805f9b34fb_01_VALUE_HANDLE)
return 0;
// Buttplug.io always sends // Buttplug.io always sends
// 0xa1, 0x08, 0x01, 0x00, 0x00, 0x00, 0x64, PERCENTAGE, 0x00, 0x64, 0xdf, 0x55, // 0xa1, 0x08, 0x01, 0x00, 0x00, 0x00, 0x64, PERCENTAGE, 0x00, 0x64, 0xdf, 0x55,
if (buffer_size != 12) return 0; if (buffer_size != 12)
if (memcmp(buffer, "\xA1\x08\x01\x00\x00\x00\x64", 7) != 0) return 0; return 0;
if (memcmp(buffer + 8, "\x00\x64\xDF\x55", 4) != 0) return 0; if (memcmp(buffer, "\xA1\x08\x01\x00\x00\x00\x64", 7) != 0)
return 0;
if (memcmp(buffer + 8, "\x00\x64\xDF\x55", 4) != 0)
return 0;
// In case it somehow came unset // In case it somehow came unset
bt_connected = true; bt_connected = true;

View file

@ -6,24 +6,24 @@ extern bool bt_connected;
extern const uint8_t profile_data[]; extern const uint8_t profile_data[];
void bt_packet_handler( void bt_packet_handler(
uint8_t packet_type, uint8_t packet_type,
uint16_t channel, uint16_t channel,
uint8_t *packet, uint8_t* packet,
uint16_t size); uint16_t size);
uint16_t bt_att_read_callback( uint16_t bt_att_read_callback(
hci_con_handle_t connection_handle, hci_con_handle_t connection_handle,
uint16_t att_handle, uint16_t att_handle,
uint16_t offset, uint16_t offset,
uint8_t * buffer, uint8_t* buffer,
uint16_t buffer_size); uint16_t buffer_size);
int bt_att_write_callback( int bt_att_write_callback(
hci_con_handle_t connection_handle, hci_con_handle_t connection_handle,
uint16_t att_handle, uint16_t att_handle,
uint16_t transaction_mode, uint16_t transaction_mode,
uint16_t offset, uint16_t offset,
uint8_t *buffer, uint8_t* buffer,
uint16_t buffer_size); uint16_t buffer_size);
#endif #endif