panda/board/power_saving.h

60 lines
1.6 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;
void power_save_enable(void) {
2019-06-26 16:52:34 -06:00
if (power_save_status != POWER_SAVE_STATUS_ENABLED) {
puts("enable power savings\n");
// turn off can
set_can_enable(CAN1, 0);
set_can_enable(CAN2, 0);
set_can_enable(CAN3, 0);
// turn off GMLAN
set_gpio_output(GPIOB, 14, 0);
set_gpio_output(GPIOB, 15, 0);
2019-06-26 16:52:34 -06:00
// turn off LIN
set_gpio_output(GPIOB, 7, 0);
set_gpio_output(GPIOA, 14, 0);
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)-1; i++) while (!putc(ur, UBLOX_SLEEP_MSG[i]));
}
power_save_status = POWER_SAVE_STATUS_ENABLED;
}
}
void power_save_disable(void) {
2019-06-26 16:52:34 -06:00
if (power_save_status != POWER_SAVE_STATUS_DISABLED) {
puts("disable power savings\n");
// turn on can
set_can_enable(CAN1, 1);
set_can_enable(CAN2, 1);
set_can_enable(CAN3, 1);
// turn on GMLAN
set_gpio_output(GPIOB, 14, 1);
set_gpio_output(GPIOB, 15, 1);
2019-06-26 16:52:34 -06:00
// turn on LIN
set_gpio_output(GPIOB, 7, 1);
set_gpio_output(GPIOA, 14, 1);
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)-1; i++) while (!putc(ur, UBLOX_WAKE_MSG[i]));
}
power_save_status = POWER_SAVE_STATUS_DISABLED;
}
}