Skip to content

Commit 84dca5b

Browse files
committed
add ping process
1 parent 4c645f7 commit 84dca5b

File tree

3 files changed

+82
-9
lines changed

3 files changed

+82
-9
lines changed

eth_view_process.c

Lines changed: 76 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,52 @@ EthViewProcess* ethernet_view_process_malloc(EthWorkerProcess type) {
2323

2424
if(type == EthWorkerProcessInit) {
2525
evp->y += 22;
26-
evp->draw_struct = malloc(sizeof(EthViewDrawInit));
27-
memset(evp->draw_struct, 0, sizeof(EthViewDrawInit));
26+
EthViewDrawInit* init = malloc(sizeof(EthViewDrawInit));
27+
memset(init, 0, sizeof(EthViewDrawInit));
28+
init->mac[0] = 0x10;
29+
init->mac[1] = 0x08;
30+
init->mac[2] = 0xDC;
31+
init->mac[3] = 0x47;
32+
init->mac[4] = 0x47;
33+
init->mac[5] = 0x54;
34+
evp->draw_struct = init;
2835
} else if(type == EthWorkerProcessStatic) {
2936
evp->y += 22;
30-
evp->draw_struct = malloc(sizeof(EthViewDrawStatic));
31-
memset(evp->draw_struct, 0, sizeof(EthViewDrawStatic));
37+
EthViewDrawStatic* stat = malloc(sizeof(EthViewDrawStatic));
38+
memset(stat, 0, sizeof(EthViewDrawStatic));
39+
stat->ip[0] = 192;
40+
stat->ip[1] = 168;
41+
stat->ip[2] = 0;
42+
stat->ip[3] = 101;
43+
stat->mask[0] = 255;
44+
stat->mask[1] = 255;
45+
stat->mask[2] = 255;
46+
stat->mask[3] = 0;
47+
stat->gateway[0] = 192;
48+
stat->gateway[1] = 168;
49+
stat->gateway[2] = 0;
50+
stat->gateway[3] = 1;
51+
stat->dns[0] = 192;
52+
stat->dns[1] = 168;
53+
stat->dns[2] = 0;
54+
stat->dns[3] = 1;
55+
evp->draw_struct = stat;
56+
} else if(type == EthWorkerProcessPing) {
57+
evp->y += 11;
58+
EthViewDrawPing* ping = malloc(sizeof(EthViewDrawPing));
59+
memset(ping, 0, sizeof(EthViewDrawPing));
60+
ping->ip[0] = 8;
61+
ping->ip[1] = 8;
62+
ping->ip[2] = 8;
63+
ping->ip[3] = 8;
64+
evp->draw_struct = ping;
3265
}
3366
return evp;
3467
}
3568

3669
void ethernet_view_process_free(EthViewProcess* evp) {
37-
if(evp->type == EthWorkerProcessInit || evp->type == EthWorkerProcessStatic) {
70+
if(evp->type == EthWorkerProcessInit || evp->type == EthWorkerProcessStatic ||
71+
evp->type == EthWorkerProcessPing) {
3872
free(evp->draw_struct);
3973
}
4074
free(evp);
@@ -181,6 +215,22 @@ void ethernet_view_process_draw(EthViewProcess* process, Canvas* canvas) {
181215
canvas_draw_line(canvas, x1, 29, x1 + 4, 29);
182216
}
183217
}
218+
} else if(process->type == EthWorkerProcessPing) {
219+
canvas_draw_frame(canvas, 31, 8, 21, 13);
220+
canvas_draw_frame(canvas, 55, 8, 21, 13);
221+
canvas_draw_frame(canvas, 79, 8, 21, 13);
222+
canvas_draw_frame(canvas, 103, 8, 21, 13);
223+
uint8_t current_digit = ((EthViewDrawPing*)process->draw_struct)->current_digit;
224+
uint8_t* adress = ((EthViewDrawPing*)process->draw_struct)->ip;
225+
for(uint8_t i = 0; i < 4; ++i) {
226+
uint8_t x = 33 + i * 24;
227+
draw_dec_number(canvas, x, 17, adress[i]);
228+
if(process->editing && (current_digit / 3 == i)) {
229+
uint8_t x1 = x + 6 * (current_digit % 3);
230+
canvas_draw_line(canvas, x1, 18, x1 + 4, 18);
231+
canvas_draw_line(canvas, x1, 19, x1 + 4, 19);
232+
}
233+
}
184234
}
185235
}
186236

@@ -246,10 +296,7 @@ void ethernet_view_process_keyevent(EthViewProcess* process, InputKey key) {
246296
adress_change_dec_digit(adress, digit, 1);
247297
} else if(key == InputKeyDown) {
248298
adress_change_dec_digit(adress, digit, -1);
249-
} else if(key == InputKeyOk) {
250-
((EthViewDrawStatic*)process->draw_struct)->editing = 0;
251-
} else if(key == InputKeyBack) {
252-
mode = 0;
299+
} else if(key == InputKeyOk || key == InputKeyBack) {
253300
((EthViewDrawStatic*)process->draw_struct)->editing = 0;
254301
}
255302
} else {
@@ -266,11 +313,31 @@ void ethernet_view_process_keyevent(EthViewProcess* process, InputKey key) {
266313
} else if(key == InputKeyDown || key == InputKeyOk) {
267314
((EthViewDrawStatic*)process->draw_struct)->editing = 1;
268315
} else if(key == InputKeyBack || key == InputKeyUp) {
316+
mode = 0;
269317
process->editing = 0;
270318
}
271319
}
272320
((EthViewDrawStatic*)process->draw_struct)->current_mode = mode;
273321
((EthViewDrawStatic*)process->draw_struct)->current_digit = digit;
322+
} else if(process->type == EthWorkerProcessPing) {
323+
uint8_t digit = ((EthViewDrawPing*)process->draw_struct)->current_digit;
324+
uint8_t* adress = ((EthViewDrawPing*)process->draw_struct)->ip;
325+
if(key == InputKeyLeft) {
326+
if(digit > 0) {
327+
digit -= 1;
328+
} else {
329+
process->editing = 0;
330+
}
331+
} else if(key == InputKeyRight) {
332+
if(digit < 11) digit += 1;
333+
} else if(key == InputKeyUp) {
334+
adress_change_dec_digit(adress, digit, 1);
335+
} else if(key == InputKeyDown) {
336+
adress_change_dec_digit(adress, digit, -1);
337+
} else if(key == InputKeyOk || key == InputKeyBack) {
338+
process->editing = 0;
339+
}
340+
((EthViewDrawPing*)process->draw_struct)->current_digit = digit;
274341
} else {
275342
if(key == InputKeyBack || key == InputKeyLeft) {
276343
process->editing = 0;

eth_view_process.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,8 @@ typedef struct EthViewDrawStatic {
3434
uint8_t current_digit;
3535
uint8_t editing;
3636
} EthViewDrawStatic;
37+
38+
typedef struct EthViewDrawPing {
39+
uint8_t ip[4];
40+
uint8_t current_digit;
41+
} EthViewDrawPing;

finik_eth_app.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ int32_t finik_eth_app(void* p) {
160160
ethernet_view_process_print(
161161
app->eth_worker->dhcp_process,
162162
"test dhcp process string. loooooong world");
163+
ethernet_view_process_print(app->eth_worker->ping_process, "ping");
163164
app->cursor_position = CURSOR_CHOOSE_PROCESS;
164165
} else if(event.key == InputKeyRight) {
165166
eth_worker_set_active_process(

0 commit comments

Comments
 (0)