add power setting
This commit is contained in:
parent
2dba5b10d2
commit
eeae409eae
|
@ -337,7 +337,7 @@ int main(void)
|
|||
|
||||
puts("LED dimmer up & running");
|
||||
|
||||
/* load settings */
|
||||
// load (or initialize) settings
|
||||
if (!verify_settings()) {
|
||||
initialize_settings();
|
||||
save_settings();
|
||||
|
@ -351,6 +351,13 @@ int main(void)
|
|||
puts("settings loaded");
|
||||
}
|
||||
|
||||
// switch power supply as saved
|
||||
if (power) {
|
||||
PORTB &= ~(1<<nPS_ON);
|
||||
} else {
|
||||
PORTB |= (1<<nPS_ON);
|
||||
}
|
||||
|
||||
while (true) {
|
||||
/* calculated PWM values */
|
||||
while (channel_flag) {
|
||||
|
@ -406,15 +413,19 @@ int main(void)
|
|||
while (power_flag) {
|
||||
if (pwr_ok) {
|
||||
puts("power ok");
|
||||
power = 1;
|
||||
/* verify if FAN is present */
|
||||
_delay_ms(500);
|
||||
if (0==tachometer) {
|
||||
puts("FAN not on, switching power off");
|
||||
PORTB |= (1<<nPS_ON);
|
||||
power = 0;
|
||||
}
|
||||
} else {
|
||||
puts("power off");
|
||||
power = 0;
|
||||
}
|
||||
save_settings();
|
||||
power_flag = false;
|
||||
}
|
||||
/* handle IR input */
|
||||
|
@ -436,13 +447,13 @@ int main(void)
|
|||
ir_keys[to_learn][0] = ir_data.address;
|
||||
ir_keys[to_learn][1] = ir_data.command;
|
||||
}
|
||||
save_settings();
|
||||
puts("IR code learned");
|
||||
to_learn = IR_ACTION_END;
|
||||
learn_flag = false;
|
||||
} else {
|
||||
ir_action(ir_data.address,ir_data.command);
|
||||
}
|
||||
save_settings();
|
||||
}
|
||||
}
|
||||
pulse = 0; /* reset burst */
|
||||
|
|
|
@ -7,8 +7,9 @@
|
|||
#include "settings.h"
|
||||
|
||||
/* initialize variable */
|
||||
uint8_t brightness[MODES][CHANNELS_1+CHANNELS_2];
|
||||
uint8_t power;
|
||||
uint8_t mode;
|
||||
uint8_t brightness[MODES][CHANNELS_1+CHANNELS_2];
|
||||
uint8_t ir_keys[IR_ACTION_END][2];
|
||||
|
||||
const uint8_t MAGIC = 0x42; // magic header
|
||||
|
@ -18,7 +19,7 @@ bool verify_settings(void)
|
|||
bool to_return;
|
||||
uint8_t checksum = 0;
|
||||
uint8_t byte;
|
||||
uint16_t settings_size = 1+sizeof(mode)+sizeof(brightness)+sizeof(ir_keys)+1; // the byte used for the checksum (magic header and checksum included)
|
||||
uint16_t settings_size = sizeof(MAGIC)+sizeof(power)+sizeof(mode)+sizeof(brightness)+sizeof(ir_keys)+1; // the byte used for the checksum (magic header and checksum included)
|
||||
for (uint16_t i=0; i<settings_size; i++) {
|
||||
byte = eeprom_read_byte((const uint8_t*)i);
|
||||
checksum ^= byte;
|
||||
|
@ -33,6 +34,7 @@ bool verify_settings(void)
|
|||
|
||||
void initialize_settings(void)
|
||||
{
|
||||
power = 0;
|
||||
mode = 0;
|
||||
for (uint8_t i=0; i<MODES; i++) {
|
||||
for (uint8_t j=0; j<CHANNELS_1+CHANNELS_2; j++) {
|
||||
|
@ -52,6 +54,9 @@ void save_settings(void)
|
|||
eeprom_update_byte((uint8_t*)addr,MAGIC);
|
||||
checksum ^= MAGIC;
|
||||
addr++;
|
||||
eeprom_update_byte((uint8_t*)addr,power);
|
||||
checksum ^= power;
|
||||
addr++;
|
||||
eeprom_update_byte((uint8_t*)addr,mode);
|
||||
checksum ^= mode;
|
||||
addr++;
|
||||
|
@ -76,6 +81,8 @@ void save_settings(void)
|
|||
void load_settings(void)
|
||||
{
|
||||
uint16_t addr = 1; // the address in the EEPROM (skip magic header)
|
||||
power = eeprom_read_byte((uint8_t*)addr);
|
||||
addr++;
|
||||
mode = eeprom_read_byte((uint8_t*)addr);
|
||||
addr++;
|
||||
for (uint8_t i=0; i<MODES; i++) {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* mode settings */
|
||||
#define MODES 3 /* the number of modes */
|
||||
extern uint8_t mode; /* the current mode */ //TODO load the mode
|
||||
extern uint8_t power; /* power state */
|
||||
extern uint8_t mode; /* the current mode */
|
||||
extern uint8_t brightness[MODES][CHANNELS_1+CHANNELS_2]; /* the mode brightness settings for the channels */
|
||||
|
||||
/* IR settings */
|
||||
|
|
Loading…
Reference in New Issue