Skip to content

Commit 6367d6e

Browse files
authored
Merge pull request #18 from ashleyhuxley/fen/refactor-post-rx
refactor: subghz post rx now happens on the queue
2 parents e4fa1a7 + db1bae1 commit 6367d6e

File tree

4 files changed

+14
-5
lines changed

4 files changed

+14
-5
lines changed

bomber_loop.c

+4
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,10 @@ void bomber_main_loop(BomberAppState* state) {
207207
case BomberEventType_Tick:
208208
updated = bomber_game_tick(state);
209209
break;
210+
case BomberEventType_SubGhz:
211+
bomber_game_post_rx(state, event.subGhzIncomingSize);
212+
updated = true;
213+
break;
210214
default:
211215
FURI_LOG_E(TAG, "Unknown event received from queue.");
212216
break;

subghz.c

+7-4
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ void tx_death(BomberAppState* state) {
6363
// Handle the buffer once data receive has completed
6464
// state: Pointer to the application state
6565
// rx_size: Number of bytes of data received
66-
static void post_rx(BomberAppState* state, size_t rx_size) {
66+
void bomber_game_post_rx(BomberAppState* state, size_t rx_size) {
6767
furi_assert(state);
6868
furi_assert(rx_size);
6969

@@ -112,8 +112,6 @@ static void post_rx(BomberAppState* state, size_t rx_size) {
112112
}
113113
break;
114114
}
115-
116-
view_port_update(state->view_port);
117115
}
118116

119117
// Handle incoming subghz data
@@ -132,7 +130,12 @@ void subghz_check_incoming(BomberAppState* state) {
132130

133131
size_t rx_size =
134132
subghz_tx_rx_worker_read(state->subghz_worker, state->rx_buffer, RX_TX_BUFFER_SIZE);
135-
post_rx(state, rx_size);
133+
134+
BomberEvent event = {.type = BomberEventType_SubGhz, .subGhzIncomingSize = rx_size };
135+
136+
if(furi_message_queue_put(state->queue, &event, FuriWaitForever) != FuriStatusOk) {
137+
FURI_LOG_W(TAG, "Failed to put timer event in message queue");
138+
}
136139
}
137140
}
138141

subghz.h

+1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ void tx_bomb_placement(BomberAppState* state, uint8_t x, uint8_t y);
1010
void tx_death(BomberAppState* state);
1111
void subghz_check_incoming(BomberAppState* state);
1212
void have_read_cb(void* context);
13+
void bomber_game_post_rx(BomberAppState* state, size_t rx_size);
1314

1415
#endif

types.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,13 @@ typedef enum {
9797
typedef enum {
9898
BomberEventType_Input,
9999
BomberEventType_Tick,
100+
BomberEventType_SubGhz
100101
} BomberEventType;
101102

102103
typedef struct {
103104
BomberEventType type;
104-
//InfraredMessage* ir_message;
105105
InputEvent input;
106+
size_t subGhzIncomingSize;
106107
} BomberEvent;
107108

108109
typedef enum { WhoDied_None, WhoDied_Fox, WhoDied_Wolf } WhoDied;

0 commit comments

Comments
 (0)