Skip to content

Commit 75809ee

Browse files
authored
Merge pull request #8 from vad7/master
fix
2 parents 7761a22 + 401bed5 commit 75809ee

File tree

1 file changed

+26
-12
lines changed

1 file changed

+26
-12
lines changed

nrf24batch.c

+26-12
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ uint8_t listen_addr_len = 0;
118118
char *ListenFields = NULL; // ptr to string: field1,field2,... max 5 field now
119119
bool ListenNew;
120120
FuriHalRtcDateTime ListenLastTime = { 0 };
121+
uint32_t ListenPrev = 0;
122+
uint32_t ListenLast = 0;
121123
FuriString **Read_cmd = NULL; // Names of read cmd
122124
uint16_t Read_cmd_Total = 0;
123125
FuriString **Log = NULL; // Strings: var=n
@@ -209,12 +211,12 @@ static void add_to_str_hex_bytes(char *out, uint8_t *arr, int bytes)
209211
} while(--bytes);
210212
}
211213

212-
int32_t get_payload_receive_field(uint8_t size)
214+
int32_t get_payload_receive_field(uint8_t *var, uint8_t size)
213215
{
214-
if(size <= 1) return *payload_receive;
215-
else if(size == 2) return *(int16_t*)payload_receive;
216-
else if(size == 3) return (*(uint32_t*)payload_receive) & 0xFFFFFF;
217-
else return *(int32_t*)payload_receive;
216+
if(size <= 1) return *var;
217+
else if(size == 2) return *(int16_t*)var;
218+
else if(size == 3) return (*(uint32_t*)var) & 0xFFFFFF;
219+
else return *(int32_t*)var;
218220
}
219221

220222
void free_Log()
@@ -404,7 +406,7 @@ bool nrf24_read_newpacket() {
404406
if(size > 4) size = 0;
405407
}
406408
}
407-
int32_t var = get_payload_receive_field(size);
409+
int32_t var = get_payload_receive_field(payload_receive, size);
408410
//FURI_LOG_D(TAG, "VAR(%d): %ld", size, var);
409411
if(size == 0) furi_string_cat_printf(str, "%c", (char)var);
410412
else {
@@ -1034,8 +1036,10 @@ static void render_callback(Canvas* const canvas, void* ctx) {
10341036
canvas_set_font(canvas, FontSecondary); // 8x10 font, 6 lines
10351037
strcpy(screen_buf, "Listen: ");
10361038
if(NRF_ERROR) strcat(screen_buf, "nRF24 ERROR!");
1037-
else if(ListenNew) snprintf(screen_buf + strlen(screen_buf), 16, "%02d:%02d:%02d", ListenLastTime.hour, ListenLastTime.minute, ListenLastTime.second);
1038-
else strcat(screen_buf, "receiving");
1039+
else if(ListenNew) {
1040+
snprintf(screen_buf + strlen(screen_buf), 16, "%02d:%02d:%02d", ListenLastTime.hour, ListenLastTime.minute, ListenLastTime.second);
1041+
if(ListenPrev) snprintf(screen_buf + strlen(screen_buf), 16, " (%lu)", ListenLast - ListenPrev);
1042+
} else strcat(screen_buf, "receiving");
10391043
canvas_draw_str(canvas, 0, 10, screen_buf);
10401044
if(ListenFields) {
10411045
char *p2, *p = ListenFields;
@@ -1049,10 +1053,18 @@ static void render_callback(Canvas* const canvas, void* ctx) {
10491053
strcpy(screen_buf + len, ": ");
10501054
if(ListenNew) {
10511055
len = payload_struct[i];
1052-
if(hex) strcat(screen_buf, "0x");
1053-
else snprintf(screen_buf, strlen(screen_buf), "%ld (", get_payload_receive_field(len));
1054-
add_to_str_hex_bytes(screen_buf, pld, len);
1055-
if(!hex) strcat(screen_buf, ")");
1056+
int32_t n = get_payload_receive_field(pld, len);
1057+
if(hex) {
1058+
strcat(screen_buf, "0x");
1059+
add_to_str_hex_bytes(screen_buf, pld, len);
1060+
} else {
1061+
snprintf(screen_buf + strlen(screen_buf), 20, "%ld", n);
1062+
if(n > 9) {
1063+
strcat(screen_buf, " (");
1064+
add_to_str_hex_bytes(screen_buf, pld, len);
1065+
strcat(screen_buf, ")");
1066+
}
1067+
}
10561068
pld += len;
10571069
}
10581070
canvas_draw_str(canvas, 0, 20 + i * 10, screen_buf);
@@ -1155,7 +1167,9 @@ void work_timer_callback(void* ctx)
11551167
bool new = nrf24_read_newpacket();
11561168
if(new) {
11571169
if(rw_type == rwt_listen) {
1170+
ListenPrev = ListenLast;
11581171
furi_hal_rtc_get_datetime(&ListenLastTime);
1172+
ListenLast = furi_hal_rtc_datetime_to_timestamp(&ListenLastTime);
11591173
ListenNew = true;
11601174
} else if(send_status != sst_receiving) break;
11611175
} else if(rw_type != rwt_listen && furi_get_tick() - NRF_time > NRF_READ_TIMEOUT) {

0 commit comments

Comments
 (0)