panda/board/power_saving.h

44 lines
1.4 KiB
C
Raw Normal View History

#define POWER_SAVE_STATUS_DISABLED 0
2019-05-21 18:05:14 -06:00
#define POWER_SAVE_STATUS_ENABLED 1
2019-05-21 18:05:14 -06:00
int power_save_status = POWER_SAVE_STATUS_DISABLED;
2019-06-26 19:24:21 -06:00
void set_power_save_state(int state) {
bool is_valid_state = (state == POWER_SAVE_STATUS_ENABLED) || (state == POWER_SAVE_STATUS_DISABLED);
if (is_valid_state && (state != power_save_status)) {
bool enable = false;
if (state == POWER_SAVE_STATUS_ENABLED) {
puts("enable power savings\n");
if (is_grey_panda) {
char UBLOX_SLEEP_MSG[] = "\xb5\x62\x06\x04\x04\x00\x01\x00\x08\x00\x17\x78";
uart_ring *ur = get_ring_by_number(1);
for (unsigned int i = 0; i < sizeof(UBLOX_SLEEP_MSG) - 1U; i++) while (!putc(ur, UBLOX_SLEEP_MSG[i]));
2019-06-26 19:24:21 -06:00
}
} else {
puts("disable power savings\n");
if (is_grey_panda) {
char UBLOX_WAKE_MSG[] = "\xb5\x62\x06\x04\x04\x00\x01\x00\x09\x00\x18\x7a";
uart_ring *ur = get_ring_by_number(1);
for (unsigned int i = 0; i < sizeof(UBLOX_WAKE_MSG) - 1U; i++) while (!putc(ur, UBLOX_WAKE_MSG[i]));
2019-06-26 19:24:21 -06:00
}
enable = true;
2019-06-26 16:52:34 -06:00
}
// turn on can
2019-06-26 19:24:21 -06:00
set_can_enable(CAN1, enable);
set_can_enable(CAN2, enable);
set_can_enable(CAN3, enable);
2019-06-26 16:52:34 -06:00
// turn on GMLAN
2019-06-26 19:24:21 -06:00
set_gpio_output(GPIOB, 14, enable);
set_gpio_output(GPIOB, 15, enable);
2019-06-26 16:52:34 -06:00
// turn on LIN
2019-06-26 19:24:21 -06:00
set_gpio_output(GPIOB, 7, enable);
set_gpio_output(GPIOA, 14, enable);
2019-06-26 16:52:34 -06:00
2019-06-26 19:24:21 -06:00
power_save_status = state;
2019-06-26 16:52:34 -06:00
}
}