Skip to content

Commit 17386d9

Browse files
committed
save all configs
1 parent 2e60d50 commit 17386d9

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

eth_save_process.c

+33
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,34 @@ static void read_02X(const char* str, uint8_t* byte) {
126126
*byte = b[1] + (b[0] << 4);
127127
}
128128

129+
static void read_ip(const char* str, uint8_t* ip) {
130+
uint8_t ip_i = 0;
131+
uint8_t i = 0;
132+
uint16_t tmp = 0;
133+
for(;;) {
134+
if('0' <= str[i] && str[i] <= '9') {
135+
tmp = tmp * 10 + str[i] - '0';
136+
} else if(str[i] == '.' || str[i] != '\n' || str[i] != '\0') {
137+
if(tmp <= 0xFF && ip_i < 4) {
138+
ip[ip_i] = tmp;
139+
ip_i += 1;
140+
tmp = 0;
141+
} else {
142+
break;
143+
}
144+
if(str[i] != '\n' && ip_i == 4) {
145+
return;
146+
}
147+
} else {
148+
break;
149+
}
150+
i += 1;
151+
}
152+
FURI_LOG_E(TAG, "cannot parse as ip string [%s]", str);
153+
ip[0] = ip[1] = ip[2] = ip[3] = 0;
154+
return;
155+
}
156+
129157
static void set_default_config(EthernetSaveConfig* cfg) {
130158
const uint8_t def_mac[6] = ETHERNET_SAVE_DEFAULT_MAC;
131159
const uint8_t def_ip[4] = ETHERNET_SAVE_DEFAULT_IP;
@@ -155,10 +183,15 @@ bool storage_read_config(File* file, EthernetSaveConfig* cfg) {
155183
read_02X(str + strlen("mac: XX-XX-XX-XX-"), &cfg->mac[4]);
156184
read_02X(str + strlen("mac: XX-XX-XX-XX-XX-"), &cfg->mac[5]);
157185
} else if(!strncmp(str, "ip: ", 4)) {
186+
read_ip(str + strlen("ip: "), cfg->ip);
158187
} else if(!strncmp(str, "mask: ", 6)) {
188+
read_ip(str + strlen("mask: "), cfg->mask);
159189
} else if(!strncmp(str, "gateway: ", 9)) {
190+
read_ip(str + strlen("gateway: "), cfg->gateway);
160191
} else if(!strncmp(str, "dns: ", 5)) {
192+
read_ip(str + strlen("dns: "), cfg->dns);
161193
} else if(!strncmp(str, "ping_ip: ", 9)) {
194+
read_ip(str + strlen("ping_ip: "), cfg->ping_ip);
162195
}
163196
}
164197

0 commit comments

Comments
 (0)