Skip to content
Snippets Groups Projects
Commit 172e1124 authored by dx's avatar dx
Browse files

badge link: docs, api constant naming improvements

parent 87ceb85a
No related branches found
No related tags found
No related merge requests found
...@@ -204,3 +204,47 @@ $ idf.py menuconfig ...@@ -204,3 +204,47 @@ $ idf.py menuconfig
Then, either save into the temporary sdkconfig by using 'S', or save into a Then, either save into the temporary sdkconfig by using 'S', or save into a
defconfig by using 'D'. The resulting `build/defconfig` file can then be copied defconfig by using 'D'. The resulting `build/defconfig` file can then be copied
into `sdkconfig.$generation` to change the defaults for a given generation. into `sdkconfig.$generation` to change the defaults for a given generation.
### Badge link
Badge link lets you have UART between badges or other devices using a 3.5mm
audio cable.
Baud rates up to 5mbit are supported in theory, but data corruption is likely
with higher rates.
Use baud rate 31250 for MIDI.
Note that `badge_link.enable()` will refuse to enable line out if the cable is
not connected. Connect it first. Connecting headphones with badge link enabled
is not recommended, especially not when wearing them.
Example usage:
On both badges:
```
import badge_link
from machine import UART
badge_link.enable(badge_link.PIN_MASK_ALL)
```
On badge 1, connect the cable to line out, and configure uart with tx on tip
(as an example)
```
uart = UART(1, baudrate=115200, tx=badge_link.PIN_INDEX_LINE_OUT_TIP, rx=badge_link.PIN_INDEX_LINE_OUT_RING)
```
On badge 2, connect the cable to line in, and configure uart with tx on ring:
```
uart = UART(1, baudrate=115200, tx=badge_link.PIN_INDEX_LINE_IN_RING, rx=badge_link.PIN_INDEX_LINE_IN_TIP)
```
Then write and read from each side:
```
uart.write("hiiii")
uart.read(5)
```
...@@ -159,7 +159,7 @@ static void init_codec() ...@@ -159,7 +159,7 @@ static void init_codec()
ESP_ERROR_CHECK(max98091_i2c_write_readback(0x41, 0x0)); ESP_ERROR_CHECK(max98091_i2c_write_readback(0x41, 0x0));
ESP_ERROR_CHECK(max98091_i2c_write_readback(0x3D, 1<<7)); // jack detect enable ESP_ERROR_CHECK(max98091_i2c_write_readback(0x3D, 1<<7)); // jack detect enable
printf("4 readbacks failing here is normal dw ^w^"); printf("4 readbacks failing here is normal dw ^w^\n");
} }
static void i2s_init(void){ static void i2s_init(void){
......
...@@ -6,18 +6,18 @@ ...@@ -6,18 +6,18 @@
#define BUTTON_PRESSED_RIGHT 1 #define BUTTON_PRESSED_RIGHT 1
#define BUTTON_NOT_PRESSED 0 #define BUTTON_NOT_PRESSED 0
#define BADGE_LINK_LINE_IN_TIP 0b0001 #define BADGE_LINK_PIN_MASK_LINE_IN_TIP 0b0001
#define BADGE_LINK_LINE_IN_RING 0b0010 #define BADGE_LINK_PIN_MASK_LINE_IN_RING 0b0010
#define BADGE_LINK_LINE_OUT_TIP 0b0100 #define BADGE_LINK_PIN_MASK_LINE_OUT_TIP 0b0100
#define BADGE_LINK_LINE_OUT_RING 0b1000 #define BADGE_LINK_PIN_MASK_LINE_OUT_RING 0b1000
#define BADGE_LINK_LINE_IN ((BADGE_LINK_LINE_IN_TIP) | (BADGE_LINK_LINE_IN_RING)) #define BADGE_LINK_PIN_MASK_LINE_IN ((BADGE_LINK_PIN_MASK_LINE_IN_TIP) | (BADGE_LINK_PIN_MASK_LINE_IN_RING))
#define BADGE_LINK_LINE_OUT ((BADGE_LINK_LINE_OUT_TIP) | (BADGE_LINK_LINE_OUT_RING)) #define BADGE_LINK_PIN_MASK_LINE_OUT ((BADGE_LINK_PIN_MASK_LINE_OUT_TIP) | (BADGE_LINK_PIN_MASK_LINE_OUT_RING))
#define BADGE_LINK_ALL ((BADGE_LINK_LINE_IN) | (BADGE_LINK_LINE_OUT)) #define BADGE_LINK_PIN_MASK_ALL ((BADGE_LINK_PIN_MASK_LINE_IN) | (BADGE_LINK_PIN_MASK_LINE_OUT))
#define BADGE_LINK_LINE_IN_TIP_PIN 4 #define BADGE_LINK_PIN_INDEX_LINE_IN_TIP 4
#define BADGE_LINK_LINE_IN_RING_PIN 5 #define BADGE_LINK_PIN_INDEX_LINE_IN_RING 5
#define BADGE_LINK_LINE_OUT_TIP_PIN 6 #define BADGE_LINK_PIN_INDEX_LINE_OUT_TIP 6
#define BADGE_LINK_LINE_OUT_RING_PIN 7 #define BADGE_LINK_PIN_INDEX_LINE_OUT_RING 7
/* Initializes GPIO modes, prefills structs, etc. Call before using library. /* Initializes GPIO modes, prefills structs, etc. Call before using library.
*/ */
...@@ -53,19 +53,19 @@ int8_t spio_application_button_get(); ...@@ -53,19 +53,19 @@ int8_t spio_application_button_get();
int8_t spio_left_button_get(); int8_t spio_left_button_get();
int8_t spio_right_button_get(); int8_t spio_right_button_get();
/* Gets active badge links ports. Mask with BADGE_LINK_LINE_{IN/OUT}_{TIP/RING}. The corresponding /* Gets active badge links ports. Mask with BADGE_LINK_PIN_MASK_LINE_{IN/OUT}_{TIP/RING}. The corresponding
* GPIO indices are listed in BADGE_LINK_LINE_{OUT/IN}_{TIP/RING}_PIN. * GPIO indices are listed in BADGE_LINK_PIN_INDEX_LINE_{OUT/IN}_{TIP/RING}.
*/ */
uint8_t spio_badge_link_get_active(uint8_t pin_mask); uint8_t spio_badge_link_get_active(uint8_t pin_mask);
/* Disables badge link ports. Mask with BADGE_LINK_LINE_{IN/OUT}_{TIP/RING}. The corresponding /* Disables badge link ports. Mask with BADGE_LINK_PIN_MASK_LINE_{IN/OUT}_{TIP/RING}. The corresponding
* GPIO indices are listed in BADGE_LINK_LINE_{OUT/IN}_{TIP/RING}_PIN. * GPIO indices are listed in BADGE_LINK_PIN_INDEX_LINE_{OUT/IN}_{TIP/RING}.
* Returns the output of spio_badge_link_get_active after execution. * Returns the output of spio_badge_link_get_active after execution.
*/ */
uint8_t spio_badge_link_disable(uint8_t pin_mask); uint8_t spio_badge_link_disable(uint8_t pin_mask);
/* Enables badge link ports. Mask with BADGE_LINK_LINE_{IN/OUT}_{TIP/RING}. The corresponding /* Enables badge link ports. Mask with BADGE_LINK_PIN_MASK_LINE_{IN/OUT}_{TIP/RING}. The corresponding
* GPIO indices are listed in BADGE_LINK_LINE_{OUT/IN}_{TIP/RING}_PIN. * GPIO indices are listed in BADGE_LINK_PIN_INDEX_LINE_{OUT/IN}_{TIP/RING}_PIN.
* Returns the output of spio_badge_link_get_active after execution. * Returns the output of spio_badge_link_get_active after execution.
* *
* Do NOT connect headphones to a badge link port. You might hear a ringing for a while. Warn user. * Do NOT connect headphones to a badge link port. You might hear a ringing for a while. Warn user.
......
...@@ -297,10 +297,10 @@ static uint8_t spio_badge_link_set(uint8_t pin_mask, uint8_t state){ ...@@ -297,10 +297,10 @@ static uint8_t spio_badge_link_set(uint8_t pin_mask, uint8_t state){
static int8_t spio_badge_link_set(uint8_t pin_mask, bool state){ static int8_t spio_badge_link_set(uint8_t pin_mask, bool state){
if(state) { if(state) {
if((pin_mask & BADGE_LINK_LINE_OUT_RING) || (pin_mask & BADGE_LINK_LINE_OUT_TIP)){ if((pin_mask & BADGE_LINK_PIN_MASK_LINE_OUT_RING) || (pin_mask & BADGE_LINK_PIN_MASK_LINE_OUT_TIP)){
if(!audio_headphones_are_connected()) { if(!audio_headphones_are_connected()) {
pin_mask &= ~BADGE_LINK_LINE_OUT_RING; pin_mask &= ~BADGE_LINK_PIN_MASK_LINE_OUT_RING;
pin_mask &= ~BADGE_LINK_LINE_OUT_TIP; pin_mask &= ~BADGE_LINK_PIN_MASK_LINE_OUT_TIP;
#ifdef USER_WARNINGS_ENABLED #ifdef USER_WARNINGS_ENABLED
printf("cannot enable line out badge link without cable plugged in for safety reasons\n"); printf("cannot enable line out badge link without cable plugged in for safety reasons\n");
} else { } else {
...@@ -310,15 +310,15 @@ static int8_t spio_badge_link_set(uint8_t pin_mask, bool state){ ...@@ -310,15 +310,15 @@ static int8_t spio_badge_link_set(uint8_t pin_mask, bool state){
} }
} }
if(pin_mask & BADGE_LINK_LINE_IN_RING) max7321s_set_pinmode_output(BADGE_LINK_LINE_IN_RING_ENABLE_PIN, 1); if(pin_mask & BADGE_LINK_PIN_MASK_LINE_IN_RING) max7321s_set_pinmode_output(BADGE_LINK_LINE_IN_RING_ENABLE_PIN, 1);
if(pin_mask & BADGE_LINK_LINE_IN_TIP) max7321s_set_pinmode_output(BADGE_LINK_LINE_IN_TIP_ENABLE_PIN, 1); if(pin_mask & BADGE_LINK_PIN_MASK_LINE_IN_TIP) max7321s_set_pinmode_output(BADGE_LINK_LINE_IN_TIP_ENABLE_PIN, 1);
if(pin_mask & BADGE_LINK_LINE_OUT_RING) max7321s_set_pinmode_output(BADGE_LINK_LINE_OUT_RING_ENABLE_PIN, 1); if(pin_mask & BADGE_LINK_PIN_MASK_LINE_OUT_RING) max7321s_set_pinmode_output(BADGE_LINK_LINE_OUT_RING_ENABLE_PIN, 1);
if(pin_mask & BADGE_LINK_LINE_OUT_TIP) max7321s_set_pinmode_output(BADGE_LINK_LINE_OUT_TIP_ENABLE_PIN, 1); if(pin_mask & BADGE_LINK_PIN_MASK_LINE_OUT_TIP) max7321s_set_pinmode_output(BADGE_LINK_LINE_OUT_TIP_ENABLE_PIN, 1);
if(pin_mask & BADGE_LINK_LINE_IN_RING) max7321s_set_pin(BADGE_LINK_LINE_IN_RING_ENABLE_PIN, !state); if(pin_mask & BADGE_LINK_PIN_MASK_LINE_IN_RING) max7321s_set_pin(BADGE_LINK_LINE_IN_RING_ENABLE_PIN, !state);
if(pin_mask & BADGE_LINK_LINE_IN_TIP) max7321s_set_pin(BADGE_LINK_LINE_IN_TIP_ENABLE_PIN, !state); if(pin_mask & BADGE_LINK_PIN_MASK_LINE_IN_TIP) max7321s_set_pin(BADGE_LINK_LINE_IN_TIP_ENABLE_PIN, !state);
if(pin_mask & BADGE_LINK_LINE_OUT_RING) max7321s_set_pin(BADGE_LINK_LINE_OUT_RING_ENABLE_PIN, !state); if(pin_mask & BADGE_LINK_PIN_MASK_LINE_OUT_RING) max7321s_set_pin(BADGE_LINK_LINE_OUT_RING_ENABLE_PIN, !state);
if(pin_mask & BADGE_LINK_LINE_OUT_TIP) max7321s_set_pin(BADGE_LINK_LINE_OUT_TIP_ENABLE_PIN, !state); if(pin_mask & BADGE_LINK_PIN_MASK_LINE_OUT_TIP) max7321s_set_pin(BADGE_LINK_LINE_OUT_TIP_ENABLE_PIN, !state);
max7321s_update(); max7321s_update();
......
...@@ -42,15 +42,17 @@ STATIC const mp_rom_map_elem_t mp_module_badge_link_globals_table[] = { ...@@ -42,15 +42,17 @@ STATIC const mp_rom_map_elem_t mp_module_badge_link_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_enable), MP_ROM_PTR(&mp_enable_obj) }, { MP_ROM_QSTR(MP_QSTR_enable), MP_ROM_PTR(&mp_enable_obj) },
{ MP_ROM_QSTR(MP_QSTR_disable), MP_ROM_PTR(&mp_disable_obj) }, { MP_ROM_QSTR(MP_QSTR_disable), MP_ROM_PTR(&mp_disable_obj) },
{ MP_ROM_QSTR(MP_QSTR_BADGE_LINK_LINE_IN_TIP), MP_ROM_INT(BADGE_LINK_LINE_IN_TIP) }, { MP_ROM_QSTR(MP_QSTR_PIN_MASK_LINE_IN_TIP), MP_ROM_INT(BADGE_LINK_PIN_MASK_LINE_IN_TIP) },
{ MP_ROM_QSTR(MP_QSTR_BADGE_LINK_LINE_IN_RING), MP_ROM_INT(BADGE_LINK_LINE_IN_RING) }, { MP_ROM_QSTR(MP_QSTR_PIN_MASK_LINE_IN_RING), MP_ROM_INT(BADGE_LINK_PIN_MASK_LINE_IN_RING) },
{ MP_ROM_QSTR(MP_QSTR_BADGE_LINK_LINE_OUT_TIP), MP_ROM_INT(BADGE_LINK_LINE_OUT_TIP) }, { MP_ROM_QSTR(MP_QSTR_PIN_MASK_LINE_OUT_TIP), MP_ROM_INT(BADGE_LINK_PIN_MASK_LINE_OUT_TIP) },
{ MP_ROM_QSTR(MP_QSTR_BADGE_LINK_LINE_OUT_RING), MP_ROM_INT(BADGE_LINK_LINE_OUT_RING) }, { MP_ROM_QSTR(MP_QSTR_PIN_MASK_LINE_OUT_RING), MP_ROM_INT(BADGE_LINK_PIN_MASK_LINE_OUT_RING) },
{ MP_ROM_QSTR(MP_QSTR_BADGE_LINK_ALL), MP_ROM_INT(BADGE_LINK_ALL) }, { MP_ROM_QSTR(MP_QSTR_PIN_MASK_LINE_IN), MP_ROM_INT(BADGE_LINK_PIN_MASK_LINE_IN) },
{ MP_ROM_QSTR(MP_QSTR_BADGE_LINK_LINE_IN_TIP_PIN), MP_ROM_INT(BADGE_LINK_LINE_IN_TIP_PIN) }, { MP_ROM_QSTR(MP_QSTR_PIN_MASK_LINE_OUT), MP_ROM_INT(BADGE_LINK_PIN_MASK_LINE_OUT) },
{ MP_ROM_QSTR(MP_QSTR_BADGE_LINK_LINE_IN_RING_PIN), MP_ROM_INT(BADGE_LINK_LINE_IN_RING_PIN) }, { MP_ROM_QSTR(MP_QSTR_PIN_MASK_ALL), MP_ROM_INT(BADGE_LINK_PIN_MASK_ALL) },
{ MP_ROM_QSTR(MP_QSTR_BADGE_LINK_LINE_OUT_TIP_PIN), MP_ROM_INT(BADGE_LINK_LINE_OUT_TIP_PIN) }, { MP_ROM_QSTR(MP_QSTR_PIN_INDEX_LINE_IN_TIP), MP_ROM_INT(BADGE_LINK_PIN_INDEX_LINE_IN_TIP) },
{ MP_ROM_QSTR(MP_QSTR_BADGE_LINK_LINE_OUT_RING_PIN), MP_ROM_INT(BADGE_LINK_LINE_OUT_RING_PIN) }, { MP_ROM_QSTR(MP_QSTR_PIN_INDEX_LINE_IN_RING), MP_ROM_INT(BADGE_LINK_PIN_INDEX_LINE_IN_RING) },
{ MP_ROM_QSTR(MP_QSTR_PIN_INDEX_LINE_OUT_TIP), MP_ROM_INT(BADGE_LINK_PIN_INDEX_LINE_OUT_TIP) },
{ MP_ROM_QSTR(MP_QSTR_PIN_INDEX_LINE_OUT_RING), MP_ROM_INT(BADGE_LINK_PIN_INDEX_LINE_OUT_RING) },
}; };
STATIC MP_DEFINE_CONST_DICT(mp_module_badge_link_globals, mp_module_badge_link_globals_table); STATIC MP_DEFINE_CONST_DICT(mp_module_badge_link_globals, mp_module_badge_link_globals_table);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment