EEPROM version
This commit is contained in:
parent
8c79fce887
commit
4f4bba55f1
@ -8,14 +8,15 @@
|
|||||||
GPRS modem(Serial1, MOD_PWR);
|
GPRS modem(Serial1, MOD_PWR);
|
||||||
bool modemOK = false;
|
bool modemOK = false;
|
||||||
byte modemErrCount = 0;
|
byte modemErrCount = 0;
|
||||||
DHT dht(T_PIN, DHT11);
|
DHT11 tSensor(T_PIN);
|
||||||
|
|
||||||
char command[CMD_SIZE];
|
char command[CMD_SIZE];
|
||||||
char message[SMS_SIZE];
|
char message[SMS_SIZE];
|
||||||
char phone[PHONE_SIZE];
|
char phone[PHONE_SIZE];
|
||||||
char datetime[DATE_SIZE];
|
char datetime[DATE_SIZE];
|
||||||
char s_buffer[BUFFER_SIZE];
|
char s_buffer[SHORT_BUFFER_SIZE];
|
||||||
char l_buffer[LONG_BUFFER_SIZE];
|
char l_buffer[LONG_BUFFER_SIZE];
|
||||||
|
char vl_buffer[SMS_SIZE + 80];
|
||||||
|
|
||||||
bool cmdFromModem = false;
|
bool cmdFromModem = false;
|
||||||
|
|
||||||
@ -28,22 +29,22 @@ byte btnCount = 0;
|
|||||||
bool btnTrigger = false;
|
bool btnTrigger = false;
|
||||||
byte event;
|
byte event;
|
||||||
|
|
||||||
const float r12_1 = 20000; // 20K
|
const float rin_1 = 200000; // 200K
|
||||||
const float r12_2 = 10000; // 10K
|
const float rin_2 = 100000; // 100K
|
||||||
const float r5_1 = 10000; // 20K
|
const float rbat_1 = 100000; // 100K
|
||||||
const float r5_2 = 10000; // 10K
|
const float rbat_2 = 100000; // 100K
|
||||||
const float rbat_1 = 10000; // 10K
|
const float rusb_1 = 100000; // 100K
|
||||||
const float rbat_2 = 10000; // 10K
|
const float rusb_2 = 100000; // 100K
|
||||||
const float rout_1 = 10000; // 10K
|
|
||||||
const float rout_2 = 10000; // 10K
|
|
||||||
|
|
||||||
float vcc = 0.0;
|
float vcc = 0.0;
|
||||||
float k12, k5, kbat, kout;
|
float kin, kbat, kusb;
|
||||||
float v12, v5, vbat, vout;
|
float vin, vbat, vusb;
|
||||||
|
|
||||||
// эту константу (typVbg) необходимо откалибровать индивидуально
|
// эту константу (typVbg) необходимо откалибровать индивидуально
|
||||||
const float typVbg = 1.08; // 1.0 -- 1.2
|
const float typVbg = 1.08; // 1.0 -- 1.2
|
||||||
|
|
||||||
|
#ifdef MAIN
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(COM_BR);
|
Serial.begin(COM_BR);
|
||||||
Serial1.begin(MOD_BR);
|
Serial1.begin(MOD_BR);
|
||||||
@ -52,23 +53,22 @@ void setup() {
|
|||||||
|
|
||||||
// Конфигурируем пины
|
// Конфигурируем пины
|
||||||
pinMode(A_PIN, INPUT);
|
pinMode(A_PIN, INPUT);
|
||||||
pinMode(V5_PIN, INPUT);
|
pinMode(BAT_T_PIN, INPUT);
|
||||||
pinMode(V12_PIN, INPUT);
|
pinMode(VIN_PIN, INPUT);
|
||||||
pinMode(VBAT_PIN, INPUT);
|
pinMode(VBAT_PIN, INPUT);
|
||||||
pinMode(VOUT_PIN, INPUT);
|
pinMode(VUSB_PIN, INPUT);
|
||||||
|
|
||||||
pinMode(LED_PIN, OUTPUT);
|
pinMode(LED_PIN, OUTPUT);
|
||||||
pinMode(BTN_PIN, INPUT);
|
pinMode(BTN_PIN, INPUT);
|
||||||
pinMode(FAN_PIN, OUTPUT);
|
pinMode(FAN_PIN, OUTPUT);
|
||||||
|
|
||||||
// Инициализируем климатический сенсор
|
// Инициализируем климатический сенсор
|
||||||
dht.begin();
|
tSensor.begin();
|
||||||
|
|
||||||
// Коэффициенты делителей напряжений
|
// Коэффициенты делителей напряжений
|
||||||
k12 = r12_2 / (r12_1 + r12_2);
|
kin = rin_2 / (rin_1 + rin_2);
|
||||||
k5 = r5_2 / (r5_1 + r5_2);
|
|
||||||
kbat = rbat_2 / (rbat_1 + rbat_2);
|
kbat = rbat_2 / (rbat_1 + rbat_2);
|
||||||
kout = rout_2 / (rout_1 + rout_2);
|
kusb = rusb_2 / (rusb_1 + rusb_2);
|
||||||
|
|
||||||
modem.controlGPIO(1, 0);
|
modem.controlGPIO(1, 0);
|
||||||
modem.controlGPIO(2, 0);
|
modem.controlGPIO(2, 0);
|
||||||
@ -77,17 +77,13 @@ void setup() {
|
|||||||
|
|
||||||
sprint("Init");
|
sprint("Init");
|
||||||
printParams();
|
printParams();
|
||||||
sprint_P(str_help);
|
printHelp();
|
||||||
|
|
||||||
initEEPROM();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
|
if (millis() - t < PERIOD) {
|
||||||
if (millis() - t > PERIOD) {
|
|
||||||
getStatus();
|
getStatus();
|
||||||
t = millis();
|
t = millis();
|
||||||
//sprint("Status!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
checkModem();
|
checkModem();
|
||||||
@ -100,59 +96,60 @@ void loop() {
|
|||||||
sprint(">", false);
|
sprint(">", false);
|
||||||
sprint(command);
|
sprint(command);
|
||||||
|
|
||||||
if (!strcmp_P(command, cmd_status)) {
|
if (isCommandMatchIndex(command, CMD_INDEX_STATUS)) {
|
||||||
|
//printAll();
|
||||||
getStatusMessage(message);
|
getStatusMessage(message);
|
||||||
returnAnswer(message);
|
returnAnswer(message);
|
||||||
} else if (!strcmp_P(command, cmd_help)) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_HELP)) {
|
||||||
sprint_P(str_help);
|
printHelp();
|
||||||
sendHelp();
|
sendHelp();
|
||||||
} else if (!strcmp_P(command, cmd_sms_on)) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_SMS_ON)) {
|
||||||
smsOn(true);
|
smsOn(true);
|
||||||
returnAnswer();
|
returnAnswer();
|
||||||
} else if (!strcmp_P(command, cmd_sms_off)) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_SMS_OFF)) {
|
||||||
smsOn(false);
|
smsOn(false);
|
||||||
returnAnswer();
|
returnAnswer();
|
||||||
} else if (!strcmp_P(command, cmd_auth_on)) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_AUTH_ON)) {
|
||||||
authOn(true);
|
authOn(true);
|
||||||
returnAnswer();
|
returnAnswer();
|
||||||
} else if (!strcmp_P(command, cmd_auth_off)) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_AUTH_OFF)) {
|
||||||
authOn(false);
|
authOn(false);
|
||||||
returnAnswer();
|
returnAnswer();
|
||||||
} else if (!strcmp_P(command, cmd_fwd_on)) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_FWD_ON)) {
|
||||||
fwdOn(true);
|
fwdOn(true);
|
||||||
returnAnswer();
|
returnAnswer();
|
||||||
} else if (!strcmp_P(command, cmd_fwd_off)) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_FWD_OFF)) {
|
||||||
fwdOn(false);
|
fwdOn(false);
|
||||||
returnAnswer();
|
returnAnswer();
|
||||||
} else if (!strcmp_P(command, cmd_on)) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_ON)) {
|
||||||
mainPowerOn();
|
mainPowerOn();
|
||||||
returnAnswer();
|
returnAnswer();
|
||||||
} else if (!strcmp_P(command, cmd_off)) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_OFF)) {
|
||||||
mainPowerOff();
|
mainPowerOff();
|
||||||
returnAnswer();
|
returnAnswer();
|
||||||
} else if (!strcmp_P(command, cmd_reset)) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_RESET)) {
|
||||||
mainReset();
|
mainReset();
|
||||||
returnAnswer();
|
returnAnswer();
|
||||||
} else if (!strcmp_P(command, cmd_a)) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_A)) {
|
||||||
a_PowerBreak();
|
a_PowerBreak();
|
||||||
returnAnswer();
|
returnAnswer();
|
||||||
} else if (!strcmp_P(command, cmd_b)) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_B)) {
|
||||||
b_PowerBreak();
|
b_PowerBreak();
|
||||||
returnAnswer();
|
returnAnswer();
|
||||||
} else if (!strcmp_P(command, cmd_forward)) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_FORWARD)) {
|
||||||
forwardLastSMS();
|
forwardLastSMS();
|
||||||
} else if (!strcmp_P(command, cmd_modem_reset) && !cmdFromModem) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_MODEM_RESET) && !cmdFromModem) {
|
||||||
modem.reset();
|
modem.reset();
|
||||||
modem.init();
|
modem.init();
|
||||||
returnAnswer();
|
returnAnswer();
|
||||||
} else if (!strcmp_P(command, cmd_modem_console) && !cmdFromModem) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_MODEM_CONSOLE) && !cmdFromModem) {
|
||||||
modemConsole();
|
modemConsole();
|
||||||
} else if (!strcmp_P(command, cmd_edit_ab) && !cmdFromModem) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_EDIT_AB) && !cmdFromModem) {
|
||||||
editAddressBook();
|
editAddressBook();
|
||||||
} else if (!strcmp_P(command, cmd_show_ab) && !cmdFromModem) {
|
} else if (isCommandMatchIndex(command, CMD_INDEX_SHOW_AB) && !cmdFromModem) {
|
||||||
printAddressBook();
|
printAddressBook();
|
||||||
} else {
|
} else {
|
||||||
sprint_P(str_help);
|
printHelp();
|
||||||
sendHelp();
|
sendHelp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -178,7 +175,7 @@ void loop() {
|
|||||||
sprint("Out call: ", phone);
|
sprint("Out call: ", phone);
|
||||||
while (true) {
|
while (true) {
|
||||||
ledOn();
|
ledOn();
|
||||||
event = modem.getEvent(message, phone, datetime, l_buffer, LONG_BUFFER_SIZE, NO_CHECK);
|
event = modem.getEvent(message, phone, datetime, vl_buffer, VLONG_BUFFER_SIZE, NO_CHECK);
|
||||||
ledOff();
|
ledOff();
|
||||||
delay(150);
|
delay(150);
|
||||||
|
|
||||||
@ -200,6 +197,8 @@ void loop() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
// Запрос статуса
|
// Запрос статуса
|
||||||
word getStatus() {
|
word getStatus() {
|
||||||
unsigned int stat = 0;
|
unsigned int stat = 0;
|
||||||
@ -213,8 +212,8 @@ word getStatus() {
|
|||||||
if (loud > 250) stat |= LOUD_WARN;
|
if (loud > 250) stat |= LOUD_WARN;
|
||||||
|
|
||||||
getVs();
|
getVs();
|
||||||
if (v12 < 10) stat |= POWER_WARN;
|
if (vin < 10) stat |= POWER_WARN;
|
||||||
if (vbat < 6.4) stat |= BAT_WARN;
|
if (vbat < 3.7) stat |= BAT_WARN;
|
||||||
|
|
||||||
return stat;
|
return stat;
|
||||||
}
|
}
|
||||||
@ -237,10 +236,9 @@ void printAll() {
|
|||||||
sprint("fwd: ", fwdOn(), true);
|
sprint("fwd: ", fwdOn(), true);
|
||||||
|
|
||||||
sprint("Vcc: ", vcc);
|
sprint("Vcc: ", vcc);
|
||||||
sprint("V12: ", v12);
|
sprint("Vin: ", vin);
|
||||||
sprint("V5: ", v5);
|
|
||||||
sprint("Vbat: ", vbat);
|
sprint("Vbat: ", vbat);
|
||||||
sprint("Vout: ", vout);
|
sprint("Vusb: ", vusb);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Формируем читабельную строку со статусом
|
// Формируем читабельную строку со статусом
|
||||||
@ -278,13 +276,8 @@ void getStatusMessage(char *message) {
|
|||||||
strcat(message, s);
|
strcat(message, s);
|
||||||
strcat(message, "V");
|
strcat(message, "V");
|
||||||
|
|
||||||
strcat(message, "\nV12: ");
|
strcat(message, " Vin: ");
|
||||||
ftoa(v12, s);
|
ftoa(vin, s);
|
||||||
strcat(message, s);
|
|
||||||
strcat(message, "V");
|
|
||||||
|
|
||||||
strcat(message, " V5: ");
|
|
||||||
ftoa(v5, s);
|
|
||||||
strcat(message, s);
|
strcat(message, s);
|
||||||
strcat(message, "V");
|
strcat(message, "V");
|
||||||
|
|
||||||
@ -293,8 +286,8 @@ void getStatusMessage(char *message) {
|
|||||||
strcat(message, s);
|
strcat(message, s);
|
||||||
strcat(message, "V");
|
strcat(message, "V");
|
||||||
|
|
||||||
strcat(message, " Vout: ");
|
strcat(message, " Vusb: ");
|
||||||
ftoa(vout, s);
|
ftoa(vusb, s);
|
||||||
strcat(message, s);
|
strcat(message, s);
|
||||||
strcat(message, "V");
|
strcat(message, "V");
|
||||||
|
|
||||||
@ -319,12 +312,20 @@ void getStatusMessage(char *message) {
|
|||||||
else strcat(message, "Off");
|
else strcat(message, "Off");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Обработка событий модема
|
bool isCommandMatchIndex(const char *command, byte index) {
|
||||||
|
char t_command[CMD_SIZE];
|
||||||
|
|
||||||
|
if (!getCommand(index, t_command)) return false;
|
||||||
|
|
||||||
|
return !strcmp(command, t_command);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Консоль модема
|
||||||
void checkModem() {
|
void checkModem() {
|
||||||
cmdFromModem = false;
|
cmdFromModem = false;
|
||||||
command[0] = '\0';
|
command[0] = '\0';
|
||||||
|
|
||||||
switch (modem.getEvent(message, phone, datetime, l_buffer, LONG_BUFFER_SIZE)) {
|
switch (modem.getEvent(message, phone, datetime, vl_buffer, VLONG_BUFFER_SIZE)) {
|
||||||
case ERR:
|
case ERR:
|
||||||
sprint("Mdm err!");
|
sprint("Mdm err!");
|
||||||
modemOK = false;
|
modemOK = false;
|
||||||
@ -345,7 +346,7 @@ void checkModem() {
|
|||||||
flash(3);
|
flash(3);
|
||||||
|
|
||||||
if (authOn() && !authOK(phone)) {
|
if (authOn() && !authOK(phone)) {
|
||||||
strcpy_P(command, cmd_forward);
|
getCommand(CMD_INDEX_FORWARD, command);
|
||||||
} else {
|
} else {
|
||||||
strncpy(command, message, CMD_SIZE);
|
strncpy(command, message, CMD_SIZE);
|
||||||
}
|
}
|
||||||
@ -385,9 +386,8 @@ void checkModem() {
|
|||||||
modemOK = true;
|
modemOK = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Консоль модема
|
|
||||||
void modemConsole() {
|
void modemConsole() {
|
||||||
sprint_P(str_modem_cons_on);
|
printShortString(S_STRING_INDEX_MODEM_CONS_ON);
|
||||||
sprint("Timeout is ", TIMEOUT, false);
|
sprint("Timeout is ", TIMEOUT, false);
|
||||||
sprint(" ms after last command");
|
sprint(" ms after last command");
|
||||||
|
|
||||||
@ -397,7 +397,7 @@ void modemConsole() {
|
|||||||
if (Serial1.available()) {
|
if (Serial1.available()) {
|
||||||
while(Serial1.available()) {
|
while(Serial1.available()) {
|
||||||
s_buffer[i++] = Serial1.read();
|
s_buffer[i++] = Serial1.read();
|
||||||
if(i == BUFFER_SIZE) break;
|
if(i == SHORT_BUFFER_SIZE) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Serial.write(s_buffer, i);
|
Serial.write(s_buffer, i);
|
||||||
@ -409,7 +409,46 @@ void modemConsole() {
|
|||||||
t = millis();
|
t = millis();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sprint_P(str_modem_cons_off);
|
printShortString(S_STRING_INDEX_MODEM_CONS_OFF);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Обработка звонков
|
||||||
|
void incomingCall() {
|
||||||
|
//if (!modem.ifcallNow()) return;
|
||||||
|
|
||||||
|
if (!modem.isCallActive(phone, l_buffer)) return;
|
||||||
|
sprint("Call from: ", false);
|
||||||
|
sprint(phone);
|
||||||
|
|
||||||
|
if (authOn() && !authOK(phone)) {
|
||||||
|
modem.callEnd();
|
||||||
|
sprint("Call unauth");
|
||||||
|
return;
|
||||||
|
} else modem.answer();
|
||||||
|
|
||||||
|
while (!modem.ifcallEnd()) {
|
||||||
|
|
||||||
|
}
|
||||||
|
sprint("Call over");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Читаем команды с GSM-модема
|
||||||
|
void readModem(char* msg, byte msg_size) {
|
||||||
|
msg[0] = '\0';
|
||||||
|
message[0] = '\0';
|
||||||
|
|
||||||
|
if (!modemOK) return;
|
||||||
|
|
||||||
|
if (modem.getSMS(message, phone, datetime, vl_buffer, VLONG_BUFFER_SIZE)) {
|
||||||
|
// sprint("Msg: ", message);
|
||||||
|
// sprint("Phn: ", phone);
|
||||||
|
// sprint("Dtm: ", datetime);
|
||||||
|
if (authOn() && !authOK(phone)) {
|
||||||
|
getCommand(CMD_INDEX_FORWARD, msg);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
strncpy(msg, message, msg_size);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Читаем команды с COM-порта
|
// Читаем команды с COM-порта
|
||||||
@ -442,7 +481,14 @@ void returnAnswer(const char * answer) {
|
|||||||
void sendHelp() {
|
void sendHelp() {
|
||||||
if (modemOK && smsOn() && cmdFromModem) {
|
if (modemOK && smsOn() && cmdFromModem) {
|
||||||
if (authOn() && !authOK(phone)) return;
|
if (authOn() && !authOK(phone)) return;
|
||||||
modem.sendSMS(phone, str_help);
|
|
||||||
|
message[0] = '\0';
|
||||||
|
getLongString(L_STRING_INDEX_HELP_1, l_buffer);
|
||||||
|
strcat(message, l_buffer);
|
||||||
|
getLongString(L_STRING_INDEX_HELP_2, l_buffer);
|
||||||
|
strcat(message, l_buffer);
|
||||||
|
|
||||||
|
modem.sendSMS(phone, message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -457,12 +503,12 @@ void forwardLastSMS() {
|
|||||||
|
|
||||||
if (fwdOn() && entryNotEmpty(0)) {
|
if (fwdOn() && entryNotEmpty(0)) {
|
||||||
loadPhoneNumber(0, main_phone);
|
loadPhoneNumber(0, main_phone);
|
||||||
s_buffer[0] = '\0';
|
l_buffer[0] = '\0';
|
||||||
strcat(s_buffer, "SMS from ");
|
strcat(l_buffer, "SMS from ");
|
||||||
strcat(s_buffer, phone);
|
strcat(l_buffer, phone);
|
||||||
strcat(s_buffer, " at ");
|
strcat(l_buffer, " at ");
|
||||||
strcat(s_buffer, datetime);
|
strcat(l_buffer, datetime);
|
||||||
modem.sendSMS(main_phone, s_buffer);
|
modem.sendSMS(main_phone, l_buffer);
|
||||||
modem.sendSMS(main_phone, message);
|
modem.sendSMS(main_phone, message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -478,7 +524,7 @@ void mainPowerOn() {
|
|||||||
|
|
||||||
void mainPowerOff() {
|
void mainPowerOff() {
|
||||||
modem.controlGPIO(1, 1);
|
modem.controlGPIO(1, 1);
|
||||||
delay(6000);
|
delay(5000);
|
||||||
modem.controlGPIO(1, 0);
|
modem.controlGPIO(1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -502,7 +548,7 @@ void b_PowerBreak() {
|
|||||||
|
|
||||||
bool isPowerOn() {
|
bool isPowerOn() {
|
||||||
getVs();
|
getVs();
|
||||||
if (v12 > 10) return true;
|
if (vin > 10) return true;
|
||||||
else return false;
|
else return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -574,30 +620,30 @@ void editAddressBook() {
|
|||||||
char indexString[4];
|
char indexString[4];
|
||||||
byte index, i = 0;
|
byte index, i = 0;
|
||||||
|
|
||||||
sprint_P(str_eab);
|
printShortString(S_STRING_INDEX_EAB_MODE);
|
||||||
sprint_P(str_help_ab);
|
printLongString(L_STRING_INDEX_HELP_AB);
|
||||||
sprint_P(str_format_ab);
|
printLongString(L_STRING_INDEX_FORMAT_AB);
|
||||||
|
|
||||||
t = millis();
|
t = millis();
|
||||||
while (millis() - t < TIMEOUT) {
|
while (millis() - t < TIMEOUT) {
|
||||||
readSerial(s_buffer, BUFFER_SIZE);
|
readSerial(s_buffer, SHORT_BUFFER_SIZE);
|
||||||
|
|
||||||
if (s_buffer[0] != '\0') {
|
if (s_buffer[0] != '\0') {
|
||||||
t = millis();
|
t = millis();
|
||||||
|
|
||||||
if (!strcmp_P(s_buffer, cmd_exit)) {
|
if (isCommandMatchIndex(s_buffer, CMD_INDEX_EXIT)) {
|
||||||
break;
|
break;
|
||||||
} else if (!strcmp_P(s_buffer, cmd_show)) {
|
} else if (isCommandMatchIndex(s_buffer, CMD_INDEX_SHOW)) {
|
||||||
printAddressBook();
|
printAddressBook();
|
||||||
} else if (!strcmp_P(s_buffer, cmd_clear)) {
|
} else if (isCommandMatchIndex(s_buffer, CMD_INDEX_CLEAR)) {
|
||||||
clearAddressBook();
|
clearAddressBook();
|
||||||
} else {
|
} else {
|
||||||
p = strstr(s_buffer, ":");
|
p = strstr(s_buffer, ":");
|
||||||
i = 0;
|
i = 0;
|
||||||
while(s_buffer[i] != ':' && i < BUFFER_SIZE) i++;
|
while(s_buffer[i] != ':' && i < SHORT_BUFFER_SIZE) i++;
|
||||||
|
|
||||||
if (p == NULL || i == 0 || i > 1) {
|
if (p == NULL || i == 0 || i > 1) {
|
||||||
sprint_P(str_format_ab);
|
printLongString(L_STRING_INDEX_FORMAT_AB);
|
||||||
} else {
|
} else {
|
||||||
// Get index
|
// Get index
|
||||||
clearBuffer(indexString, 4);
|
clearBuffer(indexString, 4);
|
||||||
@ -621,7 +667,7 @@ void editAddressBook() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sprint_P(str_help);
|
printHelp();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Утилиты
|
// Утилиты
|
||||||
@ -629,6 +675,23 @@ void clearBuffer(char *in_buffer, byte in_size) {
|
|||||||
for(byte i = 0; i < in_size - 1; i++) in_buffer[i] = '\0';
|
for(byte i = 0; i < in_size - 1; i++) in_buffer[i] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void printShortString(byte index, bool ln) {
|
||||||
|
getShortString(index, s_buffer);
|
||||||
|
Serial.print(s_buffer);
|
||||||
|
if (ln) Serial.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
void printLongString(byte index, bool ln) {
|
||||||
|
getLongString(index, l_buffer);
|
||||||
|
Serial.print(l_buffer);
|
||||||
|
if (ln) Serial.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
void printHelp() {
|
||||||
|
printLongString(L_STRING_INDEX_HELP_1, false);
|
||||||
|
printLongString(L_STRING_INDEX_HELP_2);
|
||||||
|
}
|
||||||
|
|
||||||
void printParams() {
|
void printParams() {
|
||||||
if(smsOn()) sprint("SMS on | ", false); else sprint("SMS off | ", false);
|
if(smsOn()) sprint("SMS on | ", false); else sprint("SMS off | ", false);
|
||||||
if(authOn()) sprint("Auth on | ", false); else sprint("Auth off | ", false);
|
if(authOn()) sprint("Auth on | ", false); else sprint("Auth off | ", false);
|
||||||
@ -645,62 +708,118 @@ bool authOK(char *phone) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprint(const char *description, const byte data, const bool ln) {
|
void sprint(const char * description, const byte data, const bool ln) {
|
||||||
Serial.print(description);
|
Serial.print(description);
|
||||||
Serial.print(data);
|
Serial.print(data);
|
||||||
if (ln) Serial.println();
|
if (ln) Serial.println();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprint(const char *description, const char *data, const bool ln) {
|
void sprint(const char * description, const char * data, const bool ln) {
|
||||||
Serial.print(description);
|
Serial.print(description);
|
||||||
Serial.print(data);
|
Serial.print(data);
|
||||||
if (ln) Serial.println();
|
if (ln) Serial.println();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprint(const char *description, const int data, const bool ln) {
|
void sprint(const char * description, const int data, const bool ln) {
|
||||||
Serial.print(description);
|
Serial.print(description);
|
||||||
Serial.print(data);
|
Serial.print(data);
|
||||||
if (ln) Serial.println();
|
if (ln) Serial.println();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprint(const char *description, const unsigned int data, const bool ln) {
|
void sprint(const char * description, const unsigned int data, const bool ln) {
|
||||||
Serial.print(description);
|
Serial.print(description);
|
||||||
Serial.print(data);
|
Serial.print(data);
|
||||||
if (ln) Serial.println();
|
if (ln) Serial.println();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprint(const char *description, const long int data, const bool ln) {
|
void sprint(const char * description, const long int data, const bool ln) {
|
||||||
Serial.print(description);
|
Serial.print(description);
|
||||||
Serial.print(data);
|
Serial.print(data);
|
||||||
if (ln) Serial.println();
|
if (ln) Serial.println();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprint(const char *description, const long unsigned int data, const bool ln) {
|
void sprint(const char * description, const long unsigned int data, const bool ln) {
|
||||||
Serial.print(description);
|
Serial.print(description);
|
||||||
Serial.print(data);
|
Serial.print(data);
|
||||||
if (ln) Serial.println();
|
if (ln) Serial.println();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprint(const char *description, const float data, const bool ln) {
|
void sprint(const char * description, const float data, const bool ln) {
|
||||||
Serial.print(description);
|
Serial.print(description);
|
||||||
Serial.print(data);
|
Serial.print(data);
|
||||||
if (ln) Serial.println();
|
if (ln) Serial.println();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprint(const char *description, const bool ln) {
|
void sprint(const char * description, const bool ln) {
|
||||||
Serial.print(description);
|
Serial.print(description);
|
||||||
if (ln) Serial.println();
|
if (ln) Serial.println();
|
||||||
}
|
}
|
||||||
|
|
||||||
void sprint_P(const char *description, const bool ln) {
|
// EEPROM utils
|
||||||
int len = strlen_P(description);
|
bool setCommand(byte index, const char *command) {
|
||||||
char c;
|
if (index > CMD_MAX_INDEX) return false;
|
||||||
|
|
||||||
for (byte i = 0; i < len; i++) {
|
addr = CMD_ADDR + index * CMD_SIZE;
|
||||||
c = pgm_read_byte_near(description + i);
|
|
||||||
Serial.print(c);
|
for (byte i = 0; i < CMD_SIZE; i++)
|
||||||
}
|
EEPROM.update(addr + i, command[i]);
|
||||||
if (ln) Serial.println();
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool getCommand(byte index, char *command) {
|
||||||
|
if (index > CMD_MAX_INDEX) return false;
|
||||||
|
|
||||||
|
addr = CMD_ADDR + index * CMD_SIZE;
|
||||||
|
|
||||||
|
for (byte i = 0; i < CMD_SIZE; i++)
|
||||||
|
command[i] = EEPROM.read(addr + i);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool setShortString(byte index, const char *s_buffer) {
|
||||||
|
if (index > S_STRING_MAX_INDEX) return false;
|
||||||
|
|
||||||
|
addr = S_STRING_ADDR + index * SHORT_BUFFER_SIZE;
|
||||||
|
|
||||||
|
for (byte i = 0; i < SHORT_BUFFER_SIZE; i++)
|
||||||
|
EEPROM.update(addr + i, s_buffer[i]);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool getShortString(byte index, char *s_buffer) {
|
||||||
|
if (index > S_STRING_MAX_INDEX) return false;
|
||||||
|
|
||||||
|
addr = S_STRING_ADDR + index * SHORT_BUFFER_SIZE;
|
||||||
|
|
||||||
|
for (byte i = 0; i < SHORT_BUFFER_SIZE; i++)
|
||||||
|
s_buffer[i] = EEPROM.read(addr + i);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool setLongString(byte index, const char *l_buffer) {
|
||||||
|
if (index > L_STRING_MAX_INDEX) return false;
|
||||||
|
|
||||||
|
addr = L_STRING_ADDR + index * LONG_BUFFER_SIZE;
|
||||||
|
|
||||||
|
for (byte i = 0; i < LONG_BUFFER_SIZE; i++)
|
||||||
|
EEPROM.update(addr + i, l_buffer[i]);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool getLongString(byte index, char *l_buffer) {
|
||||||
|
if (index > L_STRING_MAX_INDEX) return false;
|
||||||
|
|
||||||
|
addr = L_STRING_ADDR + index * LONG_BUFFER_SIZE;
|
||||||
|
|
||||||
|
for (byte i = 0; i < LONG_BUFFER_SIZE; i++)
|
||||||
|
l_buffer[i] = EEPROM.read(addr + i);
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool smsOn() {
|
bool smsOn() {
|
||||||
@ -803,39 +922,35 @@ float readvcc() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void getVs() {
|
void getVs() {
|
||||||
v12 = 0.0;
|
vin = 0.0;
|
||||||
v5 = 0.0;
|
|
||||||
vbat = 0.0;
|
vbat = 0.0;
|
||||||
vout = 0.0;
|
vusb = 0.0;
|
||||||
|
|
||||||
v12 += readvcc() * analogRead(V12_PIN);
|
vin += readvcc() * analogRead(VIN_PIN);
|
||||||
v5 += readvcc() * analogRead(V5_PIN);
|
|
||||||
vbat += readvcc() * analogRead(VBAT_PIN);
|
vbat += readvcc() * analogRead(VBAT_PIN);
|
||||||
vout += readvcc() * analogRead(VOUT_PIN);
|
vusb += readvcc() * analogRead(VUSB_PIN);
|
||||||
|
|
||||||
vcc = readvcc();
|
vcc = readvcc();
|
||||||
v12 = v12 / 1024.0 / k12;
|
vin = vin / 1024.0 / kin;
|
||||||
v5 = v5 / 1024.0 / k5;
|
|
||||||
vbat = vbat / 1024.0 / kbat;
|
vbat = vbat / 1024.0 / kbat;
|
||||||
vout = vout / 1024.0 / kout;
|
vusb = vusb / 1024.0 / kusb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void printVs() {
|
void printVs() {
|
||||||
sprint("Vcc: ", vcc);
|
sprint("Vcc: ", vcc);
|
||||||
sprint("V12: ", v12);
|
sprint("Vin: ", vin);
|
||||||
sprint("V5: ", v5);
|
|
||||||
sprint("Vbat: ", vbat);
|
sprint("Vbat: ", vbat);
|
||||||
sprint("Vout: ", vout);
|
sprint("Vusb: ", vusb);
|
||||||
}
|
}
|
||||||
|
|
||||||
void getTH() {
|
void getTH() {
|
||||||
int check;
|
int check;
|
||||||
|
|
||||||
check = dht.read();
|
check = tSensor.read();
|
||||||
switch (check) {
|
switch (check) {
|
||||||
case DHT_OK:
|
case DHT_OK:
|
||||||
temp = dht.getTemperatureC();
|
temp = tSensor.getTemperatureC();
|
||||||
hum = dht.getHumidity();
|
hum = tSensor.getHumidity();
|
||||||
break;
|
break;
|
||||||
case DHT_ERROR_TIMEOUT:
|
case DHT_ERROR_TIMEOUT:
|
||||||
temp = 253;
|
temp = 253;
|
||||||
@ -864,14 +979,135 @@ void ftoa(float f, char *s) {
|
|||||||
strcat(s, t);
|
strcat(s, t);
|
||||||
}
|
}
|
||||||
|
|
||||||
void initEEPROM() {
|
#ifdef INIT
|
||||||
int flag_addr = PARAM_ADDR + EEPROM_INIT_INDEX;
|
|
||||||
|
|
||||||
if (EEPROM.read(flag_addr) != INIT_FLAG) {
|
#define HELP_INIT "Usage: help | fill | print cmd | print short | print long"
|
||||||
clearAddressBook();
|
|
||||||
|
void fillEEPROM() {
|
||||||
|
// ClearParams
|
||||||
smsOn(false);
|
smsOn(false);
|
||||||
authOn(true);
|
authOn(true);
|
||||||
fwdOn(true);
|
fwdOn(true);
|
||||||
EEPROM.write(flag_addr, INIT_FLAG);
|
|
||||||
|
// Fill commands
|
||||||
|
// -- 123456789012345
|
||||||
|
// 0 status
|
||||||
|
setCommand(CMD_INDEX_STATUS, "status");
|
||||||
|
// 1 help
|
||||||
|
setCommand(CMD_INDEX_HELP, "help");
|
||||||
|
// 2 sms on
|
||||||
|
setCommand(CMD_INDEX_SMS_ON, "sms on");
|
||||||
|
// 3 sms off
|
||||||
|
setCommand(CMD_INDEX_SMS_OFF, "sms off");
|
||||||
|
// 4 on
|
||||||
|
setCommand(CMD_INDEX_ON, "on");
|
||||||
|
// 5 off
|
||||||
|
setCommand(CMD_INDEX_OFF, "off");
|
||||||
|
// 6 reset
|
||||||
|
setCommand(CMD_INDEX_RESET, "reset");
|
||||||
|
// 7 a
|
||||||
|
setCommand(CMD_INDEX_A, "a");
|
||||||
|
// 8 b
|
||||||
|
setCommand(CMD_INDEX_B, "b");
|
||||||
|
// 9 forward
|
||||||
|
setCommand(CMD_INDEX_FORWARD, "forward");
|
||||||
|
// 10
|
||||||
|
setCommand(CMD_INDEX_10, "<NONE>");
|
||||||
|
// 11 modem reset
|
||||||
|
setCommand(CMD_INDEX_MODEM_RESET, "modem reset");
|
||||||
|
// 12 modem console
|
||||||
|
setCommand(CMD_INDEX_MODEM_CONSOLE, "modem console");
|
||||||
|
// 13 edit ab
|
||||||
|
setCommand(CMD_INDEX_EDIT_AB, "edit ab");
|
||||||
|
// 14 show ab
|
||||||
|
setCommand(CMD_INDEX_SHOW_AB, "show ab");
|
||||||
|
// 15 show
|
||||||
|
setCommand(CMD_INDEX_SHOW, "show");
|
||||||
|
// 16 clear
|
||||||
|
setCommand(CMD_INDEX_CLEAR, "clear");
|
||||||
|
// 17 exit
|
||||||
|
setCommand(CMD_INDEX_EXIT, "exit");
|
||||||
|
// 18 auth on
|
||||||
|
setCommand(CMD_INDEX_AUTH_ON, "auth on");
|
||||||
|
// 19 auth off
|
||||||
|
setCommand(CMD_INDEX_AUTH_OFF, "auth off");
|
||||||
|
// 20 forward on
|
||||||
|
setCommand(CMD_INDEX_FWD_ON, "forward on");
|
||||||
|
// 21 forward off
|
||||||
|
setCommand(CMD_INDEX_FWD_OFF, "forward off");
|
||||||
|
// 22
|
||||||
|
setCommand(CMD_INDEX_22, "<NONE>");
|
||||||
|
// 23
|
||||||
|
setCommand(CMD_INDEX_23, "<NONE>");
|
||||||
|
|
||||||
|
//Fill short strings
|
||||||
|
// -- 1234567890123456789012345678901
|
||||||
|
// 0 edit ab|show ab
|
||||||
|
setShortString(S_STRING_INDEX_1, "<NONE>");
|
||||||
|
// 1 Edit address book mode
|
||||||
|
setShortString(S_STRING_INDEX_EAB_MODE, "Edit address book mode");
|
||||||
|
// 2 Modem console mode on
|
||||||
|
setShortString(S_STRING_INDEX_MODEM_CONS_ON, "Modem console mode on");
|
||||||
|
// 3 Modem console mode off
|
||||||
|
setShortString(S_STRING_INDEX_MODEM_CONS_OFF, "Modem console mode off");
|
||||||
|
|
||||||
|
//Fill long strings
|
||||||
|
// -- 123456789012345678901234567890123456789012345678901234567890123
|
||||||
|
// 0 Usage: help/status/on/off/reset/a/b/modem reset|console/edit ab
|
||||||
|
setLongString(L_STRING_INDEX_HELP_1, "Usage: help/status/on/off/reset/a/b/modem reset|console/edit ab");
|
||||||
|
// 1 Type \"show\" to view, \"clear\" to erase, \"exit\" to return
|
||||||
|
setLongString(L_STRING_INDEX_HELP_AB, "Type \"show\" to view, \"clear\" to erase, \"exit\" to return");
|
||||||
|
// 2 Format: \"i:+xxxxxxxxxxx\" to update or \"i:delete\" to delete
|
||||||
|
setLongString(L_STRING_INDEX_FORMAT_AB, "Format: \"i:+xxxxxxxxxxx\" to update or \"i:delete\" to delete");
|
||||||
|
// 3 /show ab/sms on|off/auth on|off/fwd on|off
|
||||||
|
setLongString(L_STRING_INDEX_HELP_2, "/show ab/sms on|off/auth on|off/fwd on|off");
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
delay(5000);
|
||||||
|
Serial.println("Watchdog EEPROM init program");
|
||||||
|
Serial.println(HELP_INIT);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
readSerial(command, CMD_SIZE);
|
||||||
|
|
||||||
|
if (command[0] != '\0') {
|
||||||
|
Serial.println(command);
|
||||||
|
|
||||||
|
if (!strcmp(command, "fill")) {
|
||||||
|
fillEEPROM();
|
||||||
|
Serial.println("EEPROM init complete");
|
||||||
|
} else if (!strcmp(command, "print cmd")) {
|
||||||
|
Serial.println("cmd: ");
|
||||||
|
for(byte i = 0; i <= CMD_MAX_INDEX; i++) {
|
||||||
|
getCommand(i, command);
|
||||||
|
Serial.print(i);
|
||||||
|
Serial.print(": ");
|
||||||
|
Serial.println(command);
|
||||||
|
}
|
||||||
|
} else if (!strcmp(command, "print short")) {
|
||||||
|
Serial.println("short: ");
|
||||||
|
for(byte i = 0; i <= S_STRING_MAX_INDEX; i++) {
|
||||||
|
getShortString(i, s_buffer);
|
||||||
|
Serial.print(i);
|
||||||
|
Serial.print(": ");
|
||||||
|
Serial.println(s_buffer);
|
||||||
|
}
|
||||||
|
} else if (!strcmp(command, "print long")) {
|
||||||
|
Serial.println("long: ");
|
||||||
|
for(byte i = 0; i <= L_STRING_MAX_INDEX; i++) {
|
||||||
|
getLongString(i, l_buffer);
|
||||||
|
Serial.print(i);
|
||||||
|
Serial.print(": ");
|
||||||
|
Serial.println(l_buffer);
|
||||||
|
}
|
||||||
|
} else if (!strcmp(command, "help")) {
|
||||||
|
Serial.println(HELP_INIT);
|
||||||
|
} else {
|
||||||
|
Serial.println(HELP_INIT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
123
watchdog_3.h
123
watchdog_3.h
@ -5,18 +5,23 @@
|
|||||||
// ----------------------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
#include <EEPROM.h>
|
#include <EEPROM.h>
|
||||||
#include <avr/pgmspace.h>
|
|
||||||
#include "GPRS_Shield_Arduino.h"
|
#include "GPRS_Shield_Arduino.h"
|
||||||
#include <TroykaDHT.h>
|
#include <TroykaDHT11.h>
|
||||||
|
|
||||||
|
//#define INIT
|
||||||
|
#define MAIN
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* EEPROM mapping
|
* EEPROM mapping
|
||||||
* 1024 Kb
|
* 1024 B
|
||||||
* 10 x 16 = 160 - address book | first addr 0
|
* 10 x 16 = 160 - address book | first addr 0
|
||||||
* 16 x 1 = 16 - parameters | first addr 160
|
* 16 x 1 = 16 - parameters | first addr 160
|
||||||
|
* 24 x 16 = 384 - commands | first addr 176
|
||||||
|
* 4 x 32 = 128 - short strings | first addr 560
|
||||||
|
* 4 x 64 = 256 - long strings | first addr 688
|
||||||
* -------------
|
* -------------
|
||||||
* 176 bytes
|
* 944 bytes
|
||||||
* 848 bytes free
|
* 80 bytes free
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define AB_ADDR 0
|
#define AB_ADDR 0
|
||||||
@ -27,40 +32,51 @@
|
|||||||
#define SMS_ON_INDEX 0
|
#define SMS_ON_INDEX 0
|
||||||
#define AUTH_ON_INDEX 1
|
#define AUTH_ON_INDEX 1
|
||||||
#define FWD_ON_INDEX 2
|
#define FWD_ON_INDEX 2
|
||||||
#define EEPROM_INIT_INDEX 15
|
|
||||||
|
|
||||||
#define INIT_FLAG 0xAC
|
#define CMD_ADDR 176
|
||||||
|
#define CMD_MAX_INDEX 23
|
||||||
|
|
||||||
const char cmd_status[] PROGMEM = {"status"};
|
#define S_STRING_ADDR 560
|
||||||
const char cmd_help[] PROGMEM = {"help"};
|
#define S_STRING_MAX_INDEX 3
|
||||||
const char cmd_sms_on[] PROGMEM = {"sms on"};
|
|
||||||
const char cmd_sms_off[] PROGMEM = {"sms off"};
|
|
||||||
const char cmd_on[] PROGMEM = {"on"};
|
|
||||||
const char cmd_off[] PROGMEM = {"off"};
|
|
||||||
const char cmd_reset[] PROGMEM = {"reset"};
|
|
||||||
const char cmd_a[] PROGMEM = {"a"};
|
|
||||||
const char cmd_b[] PROGMEM = {"b"};
|
|
||||||
const char cmd_forward[] PROGMEM = {"forward"};
|
|
||||||
const char cmd_modem_reset[] PROGMEM = {"modem reset"};
|
|
||||||
const char cmd_modem_console[] PROGMEM = {"modem console"};
|
|
||||||
const char cmd_edit_ab[] PROGMEM = {"edit ab"};
|
|
||||||
const char cmd_show_ab[] PROGMEM = {"show ab"};
|
|
||||||
const char cmd_show[] PROGMEM = {"show"};
|
|
||||||
const char cmd_clear[] PROGMEM = {"clear"};
|
|
||||||
const char cmd_exit[] PROGMEM = {"exit"};
|
|
||||||
const char cmd_auth_on[] PROGMEM = {"auth on"};
|
|
||||||
const char cmd_auth_off[] PROGMEM = {"auth off"};
|
|
||||||
const char cmd_fwd_on[] PROGMEM = {"forward on"};
|
|
||||||
const char cmd_fwd_off[] PROGMEM = {"forward off"};
|
|
||||||
|
|
||||||
const char str_init_eeprom[] PROGMEM = {"EEPROM init complete"};
|
#define L_STRING_ADDR 688
|
||||||
const char str_eab[] PROGMEM = {"Edit address book mode"};
|
#define L_STRING_MAX_INDEX 3
|
||||||
const char str_modem_cons_on[] PROGMEM = {"Modem console mode on"};
|
|
||||||
const char str_modem_cons_off[] PROGMEM = {"Modem console mode off"};
|
#define CMD_INDEX_STATUS 0
|
||||||
|
#define CMD_INDEX_HELP 1
|
||||||
|
#define CMD_INDEX_SMS_ON 2
|
||||||
|
#define CMD_INDEX_SMS_OFF 3
|
||||||
|
#define CMD_INDEX_ON 4
|
||||||
|
#define CMD_INDEX_OFF 5
|
||||||
|
#define CMD_INDEX_RESET 6
|
||||||
|
#define CMD_INDEX_A 7
|
||||||
|
#define CMD_INDEX_B 8
|
||||||
|
#define CMD_INDEX_FORWARD 9
|
||||||
|
#define CMD_INDEX_10 10
|
||||||
|
#define CMD_INDEX_MODEM_RESET 11
|
||||||
|
#define CMD_INDEX_MODEM_CONSOLE 12
|
||||||
|
#define CMD_INDEX_EDIT_AB 13
|
||||||
|
#define CMD_INDEX_SHOW_AB 14
|
||||||
|
#define CMD_INDEX_SHOW 15
|
||||||
|
#define CMD_INDEX_CLEAR 16
|
||||||
|
#define CMD_INDEX_EXIT 17
|
||||||
|
#define CMD_INDEX_AUTH_ON 18
|
||||||
|
#define CMD_INDEX_AUTH_OFF 19
|
||||||
|
#define CMD_INDEX_FWD_ON 20
|
||||||
|
#define CMD_INDEX_FWD_OFF 21
|
||||||
|
#define CMD_INDEX_22 22
|
||||||
|
#define CMD_INDEX_23 23
|
||||||
|
|
||||||
|
#define S_STRING_INDEX_1 0
|
||||||
|
#define S_STRING_INDEX_EAB_MODE 1
|
||||||
|
#define S_STRING_INDEX_MODEM_CONS_ON 2
|
||||||
|
#define S_STRING_INDEX_MODEM_CONS_OFF 3
|
||||||
|
|
||||||
|
#define L_STRING_INDEX_HELP_1 0
|
||||||
|
#define L_STRING_INDEX_HELP_AB 1
|
||||||
|
#define L_STRING_INDEX_FORMAT_AB 2
|
||||||
|
#define L_STRING_INDEX_HELP_2 3
|
||||||
|
|
||||||
const char str_help[] PROGMEM = {"Usage: help/status/on/off/reset/a/b/modem reset|console/edit ab/show ab/sms on|off/auth on|off/fwd on|off"};
|
|
||||||
const char str_help_ab[] PROGMEM = {"Type \"show\" to view, \"clear\" to erase, \"exit\" to return"};
|
|
||||||
const char str_format_ab[] PROGMEM = {"Format: \"i:+xxxxxxxxxxx\" to update or \"i:delete\" to delete"};
|
|
||||||
|
|
||||||
// Всякое
|
// Всякое
|
||||||
#define TIMEOUT 60000
|
#define TIMEOUT 60000
|
||||||
@ -72,10 +88,10 @@ const char str_format_ab[] PROGMEM = {"Format: \"i:+xxxxxxxxxxx\" to update or
|
|||||||
// Сенсоры
|
// Сенсоры
|
||||||
#define A_PIN A0
|
#define A_PIN A0
|
||||||
#define T_PIN A1
|
#define T_PIN A1
|
||||||
#define VOUT_PIN A2
|
#define BAT_T_PIN A2
|
||||||
#define VBAT_PIN A3
|
#define VBAT_PIN A3
|
||||||
#define V5_PIN A4
|
#define VUSB_PIN A4
|
||||||
#define V12_PIN A5
|
#define VIN_PIN A5
|
||||||
|
|
||||||
#define LED_PIN 13
|
#define LED_PIN 13
|
||||||
#define BTN_PIN 12
|
#define BTN_PIN 12
|
||||||
@ -92,8 +108,9 @@ const char str_format_ab[] PROGMEM = {"Format: \"i:+xxxxxxxxxxx\" to update or
|
|||||||
#define SMS_SIZE 160
|
#define SMS_SIZE 160
|
||||||
#define PHONE_SIZE 16
|
#define PHONE_SIZE 16
|
||||||
#define DATE_SIZE 24
|
#define DATE_SIZE 24
|
||||||
#define BUFFER_SIZE 64
|
#define SHORT_BUFFER_SIZE 32
|
||||||
#define LONG_BUFFER_SIZE 240
|
#define LONG_BUFFER_SIZE 64
|
||||||
|
#define VLONG_BUFFER_SIZE 240
|
||||||
|
|
||||||
// Флаги статуса
|
// Флаги статуса
|
||||||
#define TEMP_WARN 0x01
|
#define TEMP_WARN 0x01
|
||||||
@ -137,15 +154,22 @@ void printHelp();
|
|||||||
void printParams();
|
void printParams();
|
||||||
bool authOK(char *phone);
|
bool authOK(char *phone);
|
||||||
|
|
||||||
void sprint(const char *description, const byte data, const bool ln = true);
|
void sprint(const char * description, const byte data, const bool ln = true);
|
||||||
void sprint(const char *description, const char *data, const bool ln = true);
|
void sprint(const char * description, const char * data, const bool ln = true);
|
||||||
void sprint(const char *description, const int data, const bool ln = true);
|
void sprint(const char * description, const int data, const bool ln = true);
|
||||||
void sprint(const char *description, const unsigned int data, const bool ln = true);
|
void sprint(const char * description, const unsigned int data, const bool ln = true);
|
||||||
void sprint(const char *description, const long int data, const bool ln = true);
|
void sprint(const char * description, const long int data, const bool ln = true);
|
||||||
void sprint(const char *description, const long unsigned int data, const bool ln = true);
|
void sprint(const char * description, const long unsigned int data, const bool ln = true);
|
||||||
void sprint(const char *description, const float data, const bool ln = true);
|
void sprint(const char * description, const float data, const bool ln = true);
|
||||||
void sprint(const char *description, const bool ln = true);
|
void sprint(const char * description, const bool ln = true);
|
||||||
void sprint_P(const char *description, const bool ln = true);
|
|
||||||
|
// EEPROM utils
|
||||||
|
bool setCommand(byte index, const char *command);
|
||||||
|
bool getCommand(byte index, char *command);
|
||||||
|
bool setShortString(byte index, const char *s_buffer);
|
||||||
|
bool getShortString(byte index, char *s_buffer);
|
||||||
|
bool setLongString(byte index, const char *l_buffer);
|
||||||
|
bool getLongString(byte index, char *l_buffer);
|
||||||
|
|
||||||
bool smsOn();
|
bool smsOn();
|
||||||
void smsOn(bool temp);
|
void smsOn(bool temp);
|
||||||
@ -165,4 +189,3 @@ float readvcc();
|
|||||||
void getVs();
|
void getVs();
|
||||||
void printVs();
|
void printVs();
|
||||||
void getTH();
|
void getTH();
|
||||||
void initEEPROM();
|
|
||||||
|
Loading…
Reference in New Issue
Block a user