Skip to content

Commit 05c0b58

Browse files
committed
add statici[
1 parent dc7bde3 commit 05c0b58

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

eth_worker.c

+68
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,37 @@ int check_phylink(EthWorker* worker, EthWorkerState state, EthWorkerProcess proc
300300
#define DHCP_SOCKET 0
301301
uint8_t ping_auto(uint8_t s, uint8_t* addr);
302302

303+
static void load_net_parameters(const EthernetSaveConfig* cfg) {
304+
gWIZNETINFO.gw[0] = cfg->gateway[0];
305+
gWIZNETINFO.gw[1] = cfg->gateway[1];
306+
gWIZNETINFO.gw[2] = cfg->gateway[2];
307+
gWIZNETINFO.gw[3] = cfg->gateway[3];
308+
309+
gWIZNETINFO.sn[0] = cfg->mask[0];
310+
gWIZNETINFO.sn[1] = cfg->mask[1];
311+
gWIZNETINFO.sn[2] = cfg->mask[2];
312+
gWIZNETINFO.sn[3] = cfg->mask[3];
313+
314+
gWIZNETINFO.mac[0] = cfg->mac[0];
315+
gWIZNETINFO.mac[1] = cfg->mac[1];
316+
gWIZNETINFO.mac[2] = cfg->mac[2];
317+
gWIZNETINFO.mac[3] = cfg->mac[3];
318+
gWIZNETINFO.mac[4] = cfg->mac[4];
319+
gWIZNETINFO.mac[5] = cfg->mac[5];
320+
321+
gWIZNETINFO.ip[0] = cfg->ip[0];
322+
gWIZNETINFO.ip[1] = cfg->ip[1];
323+
gWIZNETINFO.ip[2] = cfg->ip[2];
324+
gWIZNETINFO.ip[3] = cfg->ip[3];
325+
326+
gWIZNETINFO.dns[0] = cfg->dns[0];
327+
gWIZNETINFO.dns[1] = cfg->dns[1];
328+
gWIZNETINFO.dns[2] = cfg->dns[2];
329+
gWIZNETINFO.dns[3] = cfg->dns[3];
330+
331+
gWIZNETINFO.dhcp = NETINFO_STATIC;
332+
}
333+
303334
int32_t eth_worker_task(void* context) {
304335
furi_assert(context);
305336
EthWorker* worker = (EthWorker*)context;
@@ -451,6 +482,43 @@ int32_t eth_worker_task(void* context) {
451482
gWIZNETINFO.dns[2],
452483
gWIZNETINFO.dns[3]);
453484
eth_set_force_state(EthWorkerStateOnline);
485+
} else if(worker->state == EthWorkerStateStaticIp) {
486+
if(!check_phylink(worker, EthWorkerStateStaticIp, EthWorkerProcessStatic, 5000)) {
487+
worker->state = EthWorkerStateInited;
488+
continue;
489+
}
490+
eth_log(EthWorkerProcessStatic, "set static ip");
491+
load_net_parameters(worker->config);
492+
eth_log(
493+
EthWorkerProcessStatic,
494+
"IP address:\n %d.%d.%d.%d",
495+
gWIZNETINFO.ip[0],
496+
gWIZNETINFO.ip[1],
497+
gWIZNETINFO.ip[2],
498+
gWIZNETINFO.ip[3]);
499+
eth_log(
500+
EthWorkerProcessStatic,
501+
"SM Mask:\n %d.%d.%d.%d",
502+
gWIZNETINFO.sn[0],
503+
gWIZNETINFO.sn[1],
504+
gWIZNETINFO.sn[2],
505+
gWIZNETINFO.sn[3]);
506+
eth_log(
507+
EthWorkerProcessStatic,
508+
"Gate way:\n %d.%d.%d.%d",
509+
gWIZNETINFO.gw[0],
510+
gWIZNETINFO.gw[1],
511+
gWIZNETINFO.gw[2],
512+
gWIZNETINFO.gw[3]);
513+
eth_log(
514+
EthWorkerProcessStatic,
515+
"DNS Server:\n %d.%d.%d.%d",
516+
gWIZNETINFO.dns[0],
517+
gWIZNETINFO.dns[1],
518+
gWIZNETINFO.dns[2],
519+
gWIZNETINFO.dns[3]);
520+
ctlnetwork(CN_SET_NETINFO, (void*)&gWIZNETINFO);
521+
eth_set_force_state(EthWorkerStateOnline);
454522
} else if(worker->state == EthWorkerStatePing) {
455523
uint8_t* adress = worker->config->ping_ip;
456524
eth_log(

0 commit comments

Comments
 (0)