Skip to content
Open
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
0ad25f8
add -C flag
kmoncr Nov 12, 2024
e46b7f5
increased readability
kmoncr Nov 13, 2024
3d9610e
let code breathe
kmoncr Nov 13, 2024
11d036c
add -C flag
kmoncr Nov 12, 2024
239926a
increased readability
kmoncr Nov 13, 2024
692b962
let code breathe
kmoncr Nov 13, 2024
467d9d3
added initial files
zidanekarim Feb 28, 2025
8b2b78c
testing push
zidanekarim Mar 7, 2025
fdbf8be
clanged sup.c
zidanekarim Mar 7, 2025
a51ea58
created enum arrays for zero/one
zidanekarim Mar 7, 2025
cafd6d1
initialized all the pins
zidanekarim Mar 7, 2025
4dccda1
hum
juhum1 Mar 7, 2025
357e2c8
added init
zidanekarim Mar 7, 2025
fbaf1f1
s
juhum1 Mar 7, 2025
bdedc4e
added digit 1-3 on
zidanekarim Mar 7, 2025
1416ccf
wrote bts_authorization with 100ms view delay
zidanekarim Mar 8, 2025
ef1d459
fixed enum def before func
zidanekarim Mar 8, 2025
63ffdc2
fixed set_one to remove zero
zidanekarim Mar 14, 2025
c815058
trying selected digits
zidanekarim Mar 14, 2025
d50d7c7
changed to active low
zidanekarim Mar 14, 2025
eee1b82
edit
juhum1 Mar 22, 2025
6d9ef43
testing static bts authorize
zidanekarim Mar 28, 2025
f445758
add -C flag
kmoncr Nov 12, 2024
98f45dc
increased readability
kmoncr Nov 13, 2024
eabe265
let code breathe
kmoncr Nov 13, 2024
d3e7f57
add -C flag
kmoncr Nov 12, 2024
7bac742
increased readability
kmoncr Nov 13, 2024
35b6e48
let code breathe
kmoncr Nov 13, 2024
8a87234
add -C flag
kmoncr Nov 12, 2024
1d93a40
increased readability
kmoncr Nov 13, 2024
5997ded
let code breathe
kmoncr Nov 13, 2024
adcbaa7
added init
zidanekarim Mar 7, 2025
6bd3008
added digit 1-3 on
zidanekarim Mar 7, 2025
20ea781
switched to 1khz
zidanekarim Apr 4, 2025
537a436
removed tester variables
zidanekarim Apr 4, 2025
23483cd
updated to use gpio_config and bitmasking
juhum1 Apr 25, 2025
cda05e7
fix .envrc
juhum1 Apr 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions components/sup/src/sup.c
Original file line number Diff line number Diff line change
@@ -1,20 +1,115 @@
#include "sup.h"

#include "driver/gpio.h"
#include "firmware-base/state-machine.h"
#include "soc/gpio_num.h"
#include <ember_taskglue.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <opencan_rx.h>
#include <opencan_templates.h>
#include <opencan_tx.h>

typedef enum {
PIN_SEG_A = GPIO_NUM_13,
PIN_SEG_B = GPIO_NUM_4,
PIN_SEG_C = GPIO_NUM_7,
PIN_SEG_D = GPIO_NUM_8,
PIN_SEG_E = GPIO_NUM_9,
PIN_SEG_F = GPIO_NUM_12,
PIN_SEG_1 = GPIO_NUM_1,
PIN_SEG_2 = GPIO_NUM_2,
PIN_SEG_3 = GPIO_NUM_5,
} seven_segment_pin_t;

static void display_authorization();
static void init_led();
static void sup_100Hz();
static void init_pin(seven_segment_pin_t pin);
static void set_pins(char bitfield);


static bool bbc_authorized;
static bool throttle_authorized;
static bool steer_authorized;

static const char ZERO = 0x3F;
static const char ONE = 0x06;

static enum {
BBC_STATE,
THROTTLE_STATE,
STEER_STATE,
STATES_TOTAL
} CURRENT_STATE = BBC_STATE;

gpio_config_t pin_init = {.mode = GPIO_MODE_OUTPUT,
.pin_bit_mask = (1ULL << PIN_SEG_A) | (1ULL << PIN_SEG_B)
| (1ULL << PIN_SEG_C) | (1ULL << PIN_SEG_D)
| (1ULL << PIN_SEG_E) | (1ULL << PIN_SEG_F)
| (1ULL << PIN_SEG_1) | (1ULL << PIN_SEG_2)
| (1ULL << PIN_SEG_3),
.pull_down_en = 0,
.pull_up_en = 0,
.intr_type = GPIO_INTR_DISABLE};

static void init_led()
{
gpio_config(&pin_init);
set_pins(0x3F);
gpio_set_level(PIN_SEG_1, 1);
gpio_set_level(PIN_SEG_2, 1);
gpio_set_level(PIN_SEG_3, 1);
}

static void set_pins(char bitfield)
{
gpio_set_level(PIN_SEG_A, !((bitfield >> 0) & 1));
gpio_set_level(PIN_SEG_B, !((bitfield >> 1) & 1));
gpio_set_level(PIN_SEG_C, !((bitfield >> 2) & 1));
gpio_set_level(PIN_SEG_D, !((bitfield >> 3) & 1));
gpio_set_level(PIN_SEG_E, !((bitfield >> 4) & 1));
gpio_set_level(PIN_SEG_F, !((bitfield >> 5) & 1));
}

static void display_authorization()
{
if (CURRENT_STATE == BBC_STATE) {
if (bbc_authorized) {
// if bbc is authorized, show 0
set_pins(ZERO);
} else {
// if not authorized, show 1
set_pins(ONE);
}
gpio_set_level(PIN_SEG_1, 1);
gpio_set_level(PIN_SEG_2, 0);
gpio_set_level(PIN_SEG_3, 0);
} else if (CURRENT_STATE == THROTTLE_STATE) {
if (throttle_authorized) {
set_pins(ZERO);
} else {
set_pins(ONE);
}
gpio_set_level(PIN_SEG_1, 0);
gpio_set_level(PIN_SEG_2, 1);
gpio_set_level(PIN_SEG_3, 0);
} else if (CURRENT_STATE == STEER_STATE) {
if (steer_authorized) {
set_pins(ZERO);
} else {
set_pins(ONE);
}
gpio_set_level(PIN_SEG_1, 0);
gpio_set_level(PIN_SEG_2, 0);
gpio_set_level(PIN_SEG_3, 1);
}
CURRENT_STATE = (CURRENT_STATE + 1) % STATES_TOTAL;
}

ember_rate_funcs_S module_rf = {
.call_init = init_led,
.call_1kHz = display_authorization,
.call_100Hz = sup_100Hz,
};

Expand Down
Loading