ソースを参照

new "Set" cmd, added Kitchen Vent.txt

vad7 2 年 前
コミット
0dbf1a1fc0
5 ファイル変更113 行追加16 行削除
  1. 7 9
      Distr/nrf24batch/CO2_mini.txt
  2. 95 0
      Distr/nrf24batch/Kitchen Vent.txt
  3. 3 2
      README.md
  4. 1 0
      descript.txt
  5. 7 5
      nrf24batch.c

+ 7 - 9
Distr/nrf24batch/CO2_mini.txt

@@ -1,7 +1,7 @@
 Info: CO2 sensor mini
 Address: C8C8CF
 Rate: 1
-Ch: 121
+Ch: 122
 CRC: 2
 DPL: 0
 RETR: 0x0F
@@ -18,7 +18,7 @@ Write start: 0,0,0x8F
 R: ID*=,ID
 R: OSCCAL=0x51,RAM
 R: OSCCAL_EMEM=0
-R: CO2=0x67,RAM,0xC2
+R: CO2*2=0x68,RAM,0xC2
 
 R: RxAddr=1#
 W: RxAddr=,1
@@ -43,12 +43,10 @@ W: FanLSB=,i:9
 
 W: Reset=,RESET,0xC1
 
-RBatch: Settings: ID;OSCCAL;RxAddr;Ch;nRF RETR;CO2 threshold;CO2 correct;FanLSB
-RBatch: Settings2: OSCCAL;OSCCAL_EMEM;RxAddr;Ch;nRF RETR;CO2 threshold;CO2 correct;FanLSB
+RBatch: Settings: ID;RxAddr;Ch;Send period;CO2 threshold;CO2 correct;FanLSB;nRF RETR;OSCCAL
 
-WBatch: Default Ch-121: RxAddr=0xCF;Ch=121;CO2 threshold=1000;CO2 correct=0;Send period=30;nRF RETR=0x17;FanLSB={0xC1,0};Reset
-WBatch: Default Ch-10: RxAddr=0xCF;Ch=10;CO2 threshold=1000;CO2 correct=0;Send period=31;FanLSB={0xC1,0xC2,0};Reset
-WBatch: CO2: CO2 threshold=1000;CO2 correct=1
-WBatch: Fan2: FanLSB={0xC2,0xC3,0,0,0,0,0};Reset
-WBatch: RETR 0x0F: nRF RETR=0x0F
+WBatch: Default: RxAddr=0xCF;Ch=122;Send period=30;CO2 threshold=1000;CO2 correct=0;FanLSB={0xC1,0};nRF RETR=0x17;Reset
+WBatch: CO2: CO2 threshold=1000;CO2 correct=0
+WBatch: Fan2: FanLSB={0xC1,0,0,0,0,0,0};Reset
+WBatch: RETR: nRF RETR=0x0F;Reset
 WBatch: Reset: Reset

+ 95 - 0
Distr/nrf24batch/Kitchen Vent.txt

@@ -0,0 +1,95 @@
+Info: Kitchen Vent (FanControl)
+Address: C8C8C1
+Rate: 1
+Ch: 122
+CRC: 2
+DPL: 0
+RETR: 0x0F
+Resend: 3
+Delay_ms: 30
+
+Payload struct: 2,1,1
+EEPROM=0; RAM=1; PROGMEM=2; ID=3; RESET=4
+
+R default: ,EEPROM,0xC1
+W default: n,,0x81
+Write start: 0,0,0x8F
+
+R: ID*=,ID
+R: FanOn=0x77,RAM,0xC1
+S: FanSet=,,0x40
+R: FanSpeed=0x76,RAM,0xC1
+
+R: CO2 level 1*2=4,,0xC2
+W: CO2 level 1=,4,0x82
+R: CO2 level 2*2=6,,0xC2
+W: CO2 level 2=,6,0x82
+R: CO2 level 3*2=8,,0xC2
+W: CO2 level 3=,8,0x82
+
+R: FanSpeed_1=19
+W: FanSpeed_1=,19
+R: FanSpeed_2=20
+W: FanSpeed_2=,20
+R: FanSpeed_3=21
+W: FanSpeed_3=,21
+R: FanCookSpeed_1=22
+W: FanCookSpeed_1=,22
+R: FanCookSpeed_2=23
+W: FanCookSpeed_2=,23
+R: FanCookSpeed_3=24
+W: FanCookSpeed_3=,24
+
+R: FanStartupTime=10
+W: FanStartupTime=,10
+
+R: FanOffTime=11
+W: FanOffTime=,11
+
+R: FanCookStartupTime=12
+W: FanCookStartupTime=,12
+
+R: FanCookOffTime=13
+W: FanCookOffTime=,13
+
+R: FanSleep=14
+W: FanSleep=,14
+
+R: FanCookSleep=15
+W: FanCookSleep=,15
+
+R: FanSpeedInitIdx=16
+W: FanSpeedInitIdx=,16
+
+R: FanSpeedKey=17
+W: FanSpeedKey=,17
+
+R: IRRemotes=32
+W: IRRemotes=,32
+
+R: IRRemotesHash*2[80]=i:32#
+W: IRRemotesHash=,i:32
+
+R: OutPeriod=18
+W: OutPeriod=,18
+
+R: Flags=1#
+W: Flags=,1
+
+R: RxAddr=2#
+W: RxAddr=,2
+
+R: Ch=3
+W: Ch=,3
+
+R: OSCCAL=0x51,RAM
+R: OSCCAL_EMEM=0      				
+
+W: Reset=,RESET,0xC1
+
+RBatch: Work: ID;CO2 level 1;CO2 level 2;CO2 level 3;FanCookSpeed_1;FanCookSpeed_2;FanCookSpeed_3;FanCookStartupTime;FanCookOffTime;FanCookSleep;FanSpeed_1;FanSpeed_2;FanSpeed_3;FanStartupTime;FanOffTime;FanSleep
+RBatch: Hardware: ID;RxAddr;Ch;FanSpeedInitIdx;Flags;OutPeriod;IRRemotes;OSCCAL_EMEM
+RBatch: All: ID;CO2 level 1;CO2 level 2;CO2 level 3;FanCookSpeed_1;FanCookSpeed_2;FanCookSpeed_3;FanCookStartupTime;FanCookOffTime;FanCookSleep;FanSpeed_1;FanSpeed_2;FanSpeed_3;FanStartupTime;FanOffTime;FanSleep;RxAddr;Ch;FanSpeedInitIdx;Flags;OutPeriod;IRRemotes;IRRemotesHash
+
+WBatch: SetSpeed: FanSet=0
+WBatch: Reset: Reset

+ 3 - 2
README.md

@@ -19,9 +19,10 @@ Flipper Zero application for nRF24L01 external board. Sends batch commands.
 Можно использовать константы по их имени, они задаются в файле в формате "имя=число", число либо десятичное или шестнадцатеричное с префиксом 0x.<br>
 Затем берутся заполненные значения полей из самой команды ("R:" или "W:").<br>
 Если в конце строки с командой чтения символ '#', то считанное значение будет показано в шестнадцатеричном виде.<br><br>
-Пакеты чтения "RBatch:" и записи "WBatch:" состоят из списка имен команд "R:" или "W:", соответственно, перечисленных через ";".<br><br>
+Пакеты чтения "RBatch:" и записи "WBatch:" состоят из списка имен команд "R:" или "W:"("S:"), соответственно, перечисленных через ";".<br>
+"S:" то же самое, что и "W:", только пакет "Write start" отправлен не будет<br><br>
 Отправка пакета для записи - длительно нажать Ok в списке и подтвердить.<br>
-Перед пакетом команд для записи отправляется пакет 'Write start', если эта строка присутствует в файле настроек.<br><br>
+Перед пакетом команд для записи отправляется пакет "Write start", если эта строка присутствует в файле настроек.<br><br>
 Значение команды для записи можно редактировать - Ok на списке команд, стрелки - +/- и переход по цифрам, завершить - Назад, вставка цифры - Ok, удаление цифры - длительный Ok.<br>
 Из списка команд в пакетах чтения и записи команды можно убирать - для этого нужно долго нажать на кнопку влево и подтвердить.<br>
 Это нужно, например, чтобы убирать те команды в сохраненном пакете для чтения, для которых нет команды записи.<br>

+ 1 - 0
descript.txt

@@ -26,6 +26,7 @@ W: CO2 threshold=,5,0x82    <- Write cmd, send pkt = { <from WBatch first byte o
 R: FanLSB[10]=i:9           <- Read cmd, '[10]' - means array with 10 elements, 'i:9' - means array index field (9) that will be incemented after each send
                                result in bytes = 1 pkt: { 9, 0, 0, 0xC1 }, 2 pkt: { 10, 0, 0, 0xC1 }, 3 pkt: { 10, 0, 0, 0xC1 },... total 10 packets
 W: FanLSB=,i:9              <- Write cmd, 'i' - index field. Send packets: { n & 0xFF, n >> 8, 9, 0x81 }, { n & 0xFF, n >> 8, 10, 0x81 },...  
+R: Int16Array*2[10]=i:21    <- Read cmd, array with 10 elements of int16 (2 bytes)
 W: RxAddr=,1                <- Write cmd, payload = { n, 0, 1, 0x81 }
 W: Reset=,RESET,0xC1        <- Send payload = { 0, 0, 4, 0xC1 }
 

+ 7 - 5
nrf24batch.c

@@ -36,8 +36,9 @@ const char SettingsFld_WriteStart[] = "Write start:";
 const char SettingsFld_Payload[] = "Payload struct:";
 const char SettingsFld_ReadDefault[] = "R default:";
 const char SettingsFld_WriteDefault[] = "W default:";
-const char SettingsFld_Read[] = "R:";
-const char SettingsFld_Write[] = "W:";
+const char SettingsFld_Read[] = "R:";	// Read cmd
+const char SettingsFld_Write[] = "W:";	// Write cmd
+const char SettingsFld_Set[] = "S:";	// Set cmd (like Write but without "Write start" packet)
 const char SettingsFld_ReadBatch[] = "RBatch:";
 const char SettingsFld_WriteBatch[] = "WBatch:";
 const char AskQuestion_Save[] = "SAVE BATCH?";
@@ -70,7 +71,7 @@ uint8_t save_settings = 0;
 uint16_t view_cmd[3] = {0, 0, 0}; // ReadBatch, Read, WriteBatch
 uint8_t view_x = 0;
 char screen_buf[64];
-char Info[FONT_5x7_SCREEN_WIDTH] = "";
+char Info[35] = "";
 char file_name[FONT_5x7_SCREEN_WIDTH];
 char ERR_STR[FONT_5x7_SCREEN_WIDTH];
 uint8_t ERR = 0;
@@ -636,8 +637,9 @@ bool Run_WriteBatch_cmd()
 	stream_rewind(file_stream);
 	while(stream_read_line(file_stream, str)) {
 		w = (char*)furi_string_get_cstr(str);
-		if(strncmp(w, SettingsFld_Write, sizeof(SettingsFld_Write)-1) != 0) continue;
-		w +=  sizeof(SettingsFld_Write);
+		if(strncmp(w, SettingsFld_Write, sizeof(SettingsFld_Write)-1) == 0) w +=  sizeof(SettingsFld_Write);
+		else if(strncmp(w, SettingsFld_Set, sizeof(SettingsFld_Set)-1) == 0) w +=  sizeof(SettingsFld_Set);
+		else continue;
 		delim_col = strchr(w, '=');
 		if(delim_col == NULL || len != delim_col - w) continue;
 		if(strncmp(p, w, len) != 0) continue;