2019-04-01 23:45:00 -06:00
|
|
|
#define POWER_SAVE_STATUS_DISABLED 0
|
2019-05-21 18:05:14 -06:00
|
|
|
#define POWER_SAVE_STATUS_ENABLED 1
|
2019-04-01 23:45:00 -06:00
|
|
|
|
2019-05-21 18:05:14 -06:00
|
|
|
int power_save_status = POWER_SAVE_STATUS_DISABLED;
|
2019-04-01 23:45:00 -06:00
|
|
|
|
|
|
|
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-04-01 23:45:00 -06:00
|
|
|
|
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;
|
|
|
|
}
|
2019-04-01 23:45:00 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
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-04-01 23:45:00 -06:00
|
|
|
|
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;
|
|
|
|
}
|
2019-04-01 23:45:00 -06:00
|
|
|
}
|
|
|
|
|