Skip to content

Commit 51d9d97

Browse files
committed
ability to skip cmd of write batch
1 parent 6053aa8 commit 51d9d97

File tree

4 files changed

+102
-53
lines changed

4 files changed

+102
-53
lines changed

Pics/descript.png

5.43 KB
Loading

README.md

+13-9
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,29 @@
11
# nRF24-Batch
2-
Flipper Zero application for nRF24L01 external board. Sends batch commands. (IN DEVELOP...)
2+
Flipper Zero application for nRF24L01 external board. Sends batch commands.
33

44
<b>Приложение для Flipper Zero, предназначено для отправки пакетных команд на удаленные устройства, использующие радио nRF24L01.</b><br><br>
5-
Можно использовать для настройки или чтения данных с удаленного устройства. На удаленной стороне для команды чтения требуется поддержка.<br>
5+
Можно использовать для настройки или чтения данных с удаленного устройства. На удаленной стороне требуется поддержка, ссылка на код для микроконтроллера AVR ниже.<br>
6+
<br>
67
Сначала выбирается файл настройки с описанием команд.
78
Затем стрелками влево или вправо выбирается нужный режим - Пакетное чтение (Read Batch), Чтение по одной команде (Read cmd), Пакетная запись (Write Batch).
89
<br><br>
910
Есть два вида команд: запрос-ответ и запись.<br>
10-
Запрос-ответ - отправка пакета, переключение на прием и отображение на экране, что получили.<br>
11-
Запись - фактически отправка пакетов подряд с нужными данными.<br>
11+
Запрос-ответ (Read) - отправка пакета, переключение на прием и отображение на экране, что получили.<br>
12+
Запись (Write) - фактически отправка пакетов подряд с нужными данными.<br>
1213
<br><br>
1314
Формат пакета для отправки (payload) задается в виде размера полей структуры в байтах, например, так "Payload struct: 2,1,1", что означает структуру из 3 полей: 2 байта, 1 байт, 1 байт.<br>
14-
Полученный в ответ пакет состоит из одного значения, размерность по умолчанию 1 байт (int8), при необходимости, задается числом после '*' после имени команды.<br><br>
15-
Перед отправкой пакета, он заполняется сначала шаблону по умолчанию "R default" для запроса чтения, "W default" - для записи.<br>
16-
Можно использовать константы по их имени, они задаются в формате "имя=число", число либо десятичное или шестнадцатеричное с префиксом 0x.<br>
15+
Полученный в ответ пакет (такой же длины как и отправленный) состоит из одного значения (остаток пакета не используется), размерность по умолчанию 1 байт (int8), при необходимости, она задается числом после '*' после имени команды.<br><br>
16+
Перед отправкой пакета, он заполняется сначала по шаблону по умолчанию "R default" для запроса чтения, "W default" - для записи.<br>
17+
Поля разделены - ','. Для "W default" есть специальный маркер 'n', говорящий какое поле будет заполняться значением после '=' из команды "WBatch".<br>
18+
Можно использовать константы по их имени, они задаются в файле в формате "имя=число", число либо десятичное или шестнадцатеричное с префиксом 0x.<br>
1719
Затем берутся заполненные значения полей из самой команды ("R:" или "W:").<br>
18-
Если в конце строки с командой чтения символ '#', считанное значение будет показано в шестнадцатеричном виде.<br><br>
19-
Пакет состоит из списка имен команд, перечисленных через ";".<br><br>
20+
Если в конце строки с командой чтения символ '#', то считанное значение будет показано в шестнадцатеричном виде.<br><br>
21+
Пакеты чтения "RBatch:" и записи "WBatch:" состоят из списка имен команд "R:" или "W:", соответственно, перечисленных через ";".<br><br>
2022
Отправка пакета для записи - длительно нажать Ok в списке и подтвердить.<br>
2123
Перед пакетом команд для записи отправляется пакет 'Write start', если эта строка присутствует в файле настроек.<br><br>
2224
Значение команды для записи можно редактировать - Ok на списке команд, стрелки - +/- и переход по цифрам, завершить - Назад, вставка цифры - Ok, удаление цифры - длительный Ok.<br>
25+
Из списка команд в пакетах чтения и записи команды можно убирать - для этого нужно долго нажать на кнопку влево и подтвердить.<br>
26+
Это нужно, например, чтобы убирать те команды в сохраненном пакете для чтения, для которых нет команды записи.<br>
2327
<br>
2428
Пример файл [CO2_mini](https://raw.githubusercontent.com/vad7/nRF24-Batch/main/Distr/nrf24batch/CO2_mini.txt)<br>
2529
Для устройства на Attiny44A, которое отправляет данные с датчика CO2 на контроллеры, управляющие вентиляцией или проветриватели: https://github.com/vad7/CO2-mini

descript.txt

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
Info: CO2 sensor mini
2+
Address: C8C8CF <- nRF24 address (3..5 bytes)
23
Rate: 1 <- nRF24 data rate (0 - 250Kbps, 1 - 1Mbps, 2 - 2Mbps)
34
Ch: 121 <- nRF24 channel (0..125)
45
CRC: 2 <- nRF24 CRC size
56
DPL: 0 <- nRF24 dynamic payload en/dis
6-
Address: C8C8CF <- nRF24 address (3..5 bytes)
7+
RETR: 0x0F <- nRF24 SETUP_RETR register (address 04)
78
Resend: 3 <- resend attempts on error
89
Delay_ms: 30 <- delay between cmd and resend
910

@@ -14,21 +15,21 @@ R default: ,EEPROM,0xC1 <- default for read
1415
W default: n,,0x81 <- default for write, 'n' - means field value position
1516
Write start: 0,0,0x8F <- if exist in the file - packet before write a batch
1617

17-
R: ID*=,ID <- Read cmd, '*' - means string like device ID, result in bytes = { 0, 0, 3, 0xC1 }
18+
R: ID*=,ID <- Read cmd, '*' - means string like device ID, payload result in bytes = { 0, 0, 3, 0xC1 }
1819
R: OSCCAL=0x51,RAM <- Read cmd, result in bytes = { 0x51, 0, 1, 0xC1 }
19-
R: OSCCAL_EMEM=0# <- Read cmd, result in bytes = { 0, 0, 0, 0xC1 }, in the end of line - '#', returned value in hexadecimal format
20+
R: OSCCAL_EMEM=0# <- Read cmd, result in bytes = { 0, 0, 0, 0xC1 }, in the end of line '#' - returned value in hexadecimal format
2021
R: CO2=0x67,RAM,0xC2 <- Read cmd, result in bytes = { 0x67, 0, 1, 0xC2 }
2122

2223
R: CO2 threshold*2=5,,0xC2 <- Read cmd, '*2' - means received field with 2 bytes size (int16), result in bytes = { 5, 0, 0, 0xC2 }
23-
W: CO2 threshold=,5,0x82 <- Write cmd, send pkt = { <from WBatch 1 byte>, <from WBatch 2 byte>, 5, 0x82 }
24+
W: CO2 threshold=,5,0x82 <- Write cmd, send pkt = { <from WBatch first byte of value>, <from WBatch second byte of value>, 5, 0x82 }
2425

25-
R: FanLSB[10]=i:9 <- Read cmd, '[n]' - means array with 'n' elements, 'i:n' - means array index field that will be incemented after next cmd
26+
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
2627
result in bytes = 1 pkt: { 9, 0, 0, 0xC1 }, 2 pkt: { 10, 0, 0, 0xC1 }, 3 pkt: { 10, 0, 0, 0xC1 },... total 10 packets
2728
W: FanLSB=,i:9 <- Write cmd, 'i' - index field. Send packets: { n & 0xFF, n >> 8, 9, 0x81 }, { n & 0xFF, n >> 8, 10, 0x81 },...
28-
W: RxAddr=,1
29-
W: Reset=,RESET,0xC1
29+
W: RxAddr=,1 <- Write cmd, payload = { n, 0, 1, 0x81 }
30+
W: Reset=,RESET,0xC1 <- Send payload = { 0, 0, 4, 0xC1 }
3031

3132
RBatch: Settings: ID;OSCCAL;RxAddr;Ch;nRF RETR;CO2 threshold;CO2 correct;FanLSB <- Read Batch, 8 packets will be sent and received
3233

33-
WBatch: Default: RxAddr=0xCF;CO2 threshold=1000;Reset <- Write Batch, Send: { 0,0,0,0x8F }, { 0xCF, 0, 1, 0x81 }, { 0xE8, 0x03, 5, 0x82 }, { 0, 0, 4, 0x81 }
34+
WBatch: Default: RxAddr=0xCF;CO2 threshold=1000;Reset <- Write Batch, Send: { 0,0,0,0x8F }, { 0xCF, 0, 1, 0x81 }, { 0xE8, 0x03, 5, 0x82 }, { 0, 0, 4, 0xC1 }
3435
WBatch: Fans: FanLSB={0xC2,0xC3,0} <- Write Batch, Send: { 0,0,0,0x8F }, { 0xC2, 0, 9, 0x81 }, { 0xC3, 0, 10, 0x81 }

0 commit comments

Comments
 (0)