Improve Adafruit BLE configuration defines (#14749)
* Improve Adafruit BLE configuration defines * Formatting
This commit is contained in:
		
							parent
							
								
									00fd404433
								
							
						
					
					
						commit
						db41a3426c
					
				
					 9 changed files with 26 additions and 50 deletions
				
			
		| 
						 | 
				
			
			@ -16,24 +16,22 @@
 | 
			
		|||
// These are the pin assignments for the 32u4 boards.
 | 
			
		||||
// You may define them to something else in your config.h
 | 
			
		||||
// if yours is wired up differently.
 | 
			
		||||
#ifndef AdafruitBleResetPin
 | 
			
		||||
#    define AdafruitBleResetPin D4
 | 
			
		||||
#ifndef ADAFRUIT_BLE_RST_PIN
 | 
			
		||||
#    define ADAFRUIT_BLE_RST_PIN D4
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AdafruitBleCSPin
 | 
			
		||||
#    define AdafruitBleCSPin B4
 | 
			
		||||
#ifndef ADAFRUIT_BLE_CS_PIN
 | 
			
		||||
#    define ADAFRUIT_BLE_CS_PIN B4
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AdafruitBleIRQPin
 | 
			
		||||
#    define AdafruitBleIRQPin E6
 | 
			
		||||
#ifndef ADAFRUIT_BLE_IRQ_PIN
 | 
			
		||||
#    define ADAFRUIT_BLE_IRQ_PIN E6
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef AdafruitBleSpiClockSpeed
 | 
			
		||||
#    define AdafruitBleSpiClockSpeed 4000000UL  // SCK frequency
 | 
			
		||||
#ifndef ADAFRUIT_BLE_SCK_DIVISOR
 | 
			
		||||
#    define ADAFRUIT_BLE_SCK_DIVISOR 2  // 4MHz SCK/8MHz CPU, calculated for Feather 32U4 BLE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define SCK_DIVISOR (F_CPU / AdafruitBleSpiClockSpeed)
 | 
			
		||||
 | 
			
		||||
#define SAMPLE_BATTERY
 | 
			
		||||
#define ConnectionUpdateInterval 1000 /* milliseconds */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -145,7 +143,7 @@ static bool at_command_P(const char *cmd, char *resp, uint16_t resplen, bool ver
 | 
			
		|||
 | 
			
		||||
// Send a single SDEP packet
 | 
			
		||||
static bool sdep_send_pkt(const struct sdep_msg *msg, uint16_t timeout) {
 | 
			
		||||
    spi_start(AdafruitBleCSPin, false, 0, SCK_DIVISOR);
 | 
			
		||||
    spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
 | 
			
		||||
    uint16_t timerStart = timer_read();
 | 
			
		||||
    bool     success    = false;
 | 
			
		||||
    bool     ready      = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -159,7 +157,7 @@ static bool sdep_send_pkt(const struct sdep_msg *msg, uint16_t timeout) {
 | 
			
		|||
        // Release it and let it initialize
 | 
			
		||||
        spi_stop();
 | 
			
		||||
        wait_us(SdepBackOff);
 | 
			
		||||
        spi_start(AdafruitBleCSPin, false, 0, SCK_DIVISOR);
 | 
			
		||||
        spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
 | 
			
		||||
    } while (timer_elapsed(timerStart) < timeout);
 | 
			
		||||
 | 
			
		||||
    if (ready) {
 | 
			
		||||
| 
						 | 
				
			
			@ -192,7 +190,7 @@ static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) {
 | 
			
		|||
    bool     ready      = false;
 | 
			
		||||
 | 
			
		||||
    do {
 | 
			
		||||
        ready = readPin(AdafruitBleIRQPin);
 | 
			
		||||
        ready = readPin(ADAFRUIT_BLE_IRQ_PIN);
 | 
			
		||||
        if (ready) {
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -200,7 +198,7 @@ static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) {
 | 
			
		|||
    } while (timer_elapsed(timerStart) < timeout);
 | 
			
		||||
 | 
			
		||||
    if (ready) {
 | 
			
		||||
        spi_start(AdafruitBleCSPin, false, 0, SCK_DIVISOR);
 | 
			
		||||
        spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
 | 
			
		||||
 | 
			
		||||
        do {
 | 
			
		||||
            // Read the command type, waiting for the data to be ready
 | 
			
		||||
| 
						 | 
				
			
			@ -209,7 +207,7 @@ static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) {
 | 
			
		|||
                // Release it and let it initialize
 | 
			
		||||
                spi_stop();
 | 
			
		||||
                wait_us(SdepBackOff);
 | 
			
		||||
                spi_start(AdafruitBleCSPin, false, 0, SCK_DIVISOR);
 | 
			
		||||
                spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -235,7 +233,7 @@ static void resp_buf_read_one(bool greedy) {
 | 
			
		|||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (readPin(AdafruitBleIRQPin)) {
 | 
			
		||||
    if (readPin(ADAFRUIT_BLE_IRQ_PIN)) {
 | 
			
		||||
        struct sdep_msg msg;
 | 
			
		||||
 | 
			
		||||
    again:
 | 
			
		||||
| 
						 | 
				
			
			@ -246,7 +244,7 @@ static void resp_buf_read_one(bool greedy) {
 | 
			
		|||
                dprintf("recv latency %dms\n", TIMER_DIFF_16(timer_read(), last_send));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (greedy && resp_buf.peek(last_send) && readPin(AdafruitBleIRQPin)) {
 | 
			
		||||
            if (greedy && resp_buf.peek(last_send) && readPin(ADAFRUIT_BLE_IRQ_PIN)) {
 | 
			
		||||
                goto again;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -297,16 +295,16 @@ static bool ble_init(void) {
 | 
			
		|||
    state.configured   = false;
 | 
			
		||||
    state.is_connected = false;
 | 
			
		||||
 | 
			
		||||
    setPinInput(AdafruitBleIRQPin);
 | 
			
		||||
    setPinInput(ADAFRUIT_BLE_IRQ_PIN);
 | 
			
		||||
 | 
			
		||||
    spi_init();
 | 
			
		||||
 | 
			
		||||
    // Perform a hardware reset
 | 
			
		||||
    setPinOutput(AdafruitBleResetPin);
 | 
			
		||||
    writePinHigh(AdafruitBleResetPin);
 | 
			
		||||
    writePinLow(AdafruitBleResetPin);
 | 
			
		||||
    setPinOutput(ADAFRUIT_BLE_RST_PIN);
 | 
			
		||||
    writePinHigh(ADAFRUIT_BLE_RST_PIN);
 | 
			
		||||
    writePinLow(ADAFRUIT_BLE_RST_PIN);
 | 
			
		||||
    wait_ms(10);
 | 
			
		||||
    writePinHigh(AdafruitBleResetPin);
 | 
			
		||||
    writePinHigh(ADAFRUIT_BLE_RST_PIN);
 | 
			
		||||
 | 
			
		||||
    wait_ms(1000);  // Give it a second to initialize
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -509,7 +507,7 @@ void adafruit_ble_task(void) {
 | 
			
		|||
    resp_buf_read_one(true);
 | 
			
		||||
    send_buf_send_one(SdepShortTimeout);
 | 
			
		||||
 | 
			
		||||
    if (resp_buf.empty() && (state.event_flags & UsingEvents) && readPin(AdafruitBleIRQPin)) {
 | 
			
		||||
    if (resp_buf.empty() && (state.event_flags & UsingEvents) && readPin(ADAFRUIT_BLE_IRQ_PIN)) {
 | 
			
		||||
        // Must be an event update
 | 
			
		||||
        if (at_command_P(PSTR("AT+EVENTSTATUS"), resbuf, sizeof(resbuf))) {
 | 
			
		||||
            uint32_t mask = strtoul(resbuf, NULL, 16);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue