Chau Vo / device_configuration

Dependents:   F103-Web-Server

Fork of my_eeprom_funcs by Chau Vo

Committer:
olympux
Date:
Thu Jun 16 21:51:03 2016 +0000
Revision:
15:126b1eb74709
Parent:
14:17a44517b13d
Added set configuration with RPC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
olympux 1:6bdc99dd8e0a 1 #include "mbed.h"
olympux 1:6bdc99dd8e0a 2 #include "my_eeprom_funcs.h"
olympux 1:6bdc99dd8e0a 3
olympux 1:6bdc99dd8e0a 4
olympux 11:250b05a5266d 5 /*
olympux 10:f37acffddef9 6 * Debug option
olympux 10:f37acffddef9 7 */
olympux 4:944a4646b825 8 #if 1
olympux 4:944a4646b825 9 //Enable debug
olympux 4:944a4646b825 10 #include <cstdio>
olympux 4:944a4646b825 11 #define DBG(x, ...) std::printf("[eeprom : DBG]"x"\r\n", ##__VA_ARGS__);
olympux 4:944a4646b825 12 #define WARN(x, ...) std::printf("[eeprom : WARN]"x"\r\n", ##__VA_ARGS__);
olympux 4:944a4646b825 13 #define ERR(x, ...) std::printf("[eeprom : ERR]"x"\r\n", ##__VA_ARGS__);
olympux 4:944a4646b825 14
olympux 4:944a4646b825 15 #else
olympux 4:944a4646b825 16 //Disable debug
olympux 4:944a4646b825 17 #define DBG(x, ...)
olympux 4:944a4646b825 18 #define WARN(x, ...)
olympux 4:944a4646b825 19 #define ERR(x, ...)
olympux 4:944a4646b825 20
olympux 4:944a4646b825 21 #endif
olympux 4:944a4646b825 22
olympux 12:613ab276bf37 23 /*!
olympux 12:613ab276bf37 24 * Function to write module network configuration
olympux 12:613ab276bf37 25 * @param <char *buf> configuration buffer
olympux 12:613ab276bf37 26 * @note 4-byte IP address
olympux 12:613ab276bf37 27 * @note 4-byte subnet
olympux 12:613ab276bf37 28 * @note 4-byte gateway
olympux 12:613ab276bf37 29 * @note 3-byte MAC
olympux 12:613ab276bf37 30 */
olympux 1:6bdc99dd8e0a 31 void write_eeprom_network(char *buf) {
olympux 1:6bdc99dd8e0a 32 // Write network configuration
olympux 1:6bdc99dd8e0a 33 // 4-byte IP address + 4-byte subnet + 4-byte gateway + 3-byte MAC
olympux 1:6bdc99dd8e0a 34
olympux 5:eea03d0eb95a 35 DBG("Saving network configuration for this device...");
olympux 1:6bdc99dd8e0a 36
olympux 1:6bdc99dd8e0a 37 // Unlock the Flash Program Erase controller */
olympux 1:6bdc99dd8e0a 38 FLASH_Unlock();
olympux 1:6bdc99dd8e0a 39 // EEPROM Init
olympux 1:6bdc99dd8e0a 40 EE_Init();
olympux 6:241d1539914a 41
olympux 6:241d1539914a 42 // erase first_run flag
olympux 8:4fc4b1b5509b 43 EE_WriteVariable(VirtAddVarTab[CONFIGURED_IP_FLAG_POS], DEFAULT_ENABLE_FLAG_VALUE);
olympux 6:241d1539914a 44
olympux 1:6bdc99dd8e0a 45 // IP address
olympux 1:6bdc99dd8e0a 46 EE_WriteVariable(VirtAddVarTab[IP_ADDRESS_POS+0], *buf++);
olympux 1:6bdc99dd8e0a 47 EE_WriteVariable(VirtAddVarTab[IP_ADDRESS_POS+1], *buf++);
olympux 1:6bdc99dd8e0a 48 EE_WriteVariable(VirtAddVarTab[IP_ADDRESS_POS+2], *buf++);
olympux 1:6bdc99dd8e0a 49 EE_WriteVariable(VirtAddVarTab[IP_ADDRESS_POS+3], *buf++);
olympux 1:6bdc99dd8e0a 50
olympux 1:6bdc99dd8e0a 51 // IP subnet
olympux 1:6bdc99dd8e0a 52 EE_WriteVariable(VirtAddVarTab[IP_SUBNET_POS+0], *buf++);
olympux 1:6bdc99dd8e0a 53 EE_WriteVariable(VirtAddVarTab[IP_SUBNET_POS+1], *buf++);
olympux 1:6bdc99dd8e0a 54 EE_WriteVariable(VirtAddVarTab[IP_SUBNET_POS+2], *buf++);
olympux 1:6bdc99dd8e0a 55 EE_WriteVariable(VirtAddVarTab[IP_SUBNET_POS+3], *buf++);
olympux 1:6bdc99dd8e0a 56
olympux 1:6bdc99dd8e0a 57 // IP gateway
olympux 1:6bdc99dd8e0a 58 EE_WriteVariable(VirtAddVarTab[IP_GATEWAY_POS+0], *buf++);
olympux 1:6bdc99dd8e0a 59 EE_WriteVariable(VirtAddVarTab[IP_GATEWAY_POS+1], *buf++);
olympux 1:6bdc99dd8e0a 60 EE_WriteVariable(VirtAddVarTab[IP_GATEWAY_POS+2], *buf++);
olympux 1:6bdc99dd8e0a 61 EE_WriteVariable(VirtAddVarTab[IP_GATEWAY_POS+3], *buf++);
olympux 1:6bdc99dd8e0a 62
olympux 1:6bdc99dd8e0a 63 //// TCP server port, not used
olympux 1:6bdc99dd8e0a 64 //EE_WriteVariable(VirtAddVarTab[TCP_SERVER_LOCAL_PORT_POS], *buf++);
olympux 1:6bdc99dd8e0a 65 //// UDP server port, not used
olympux 1:6bdc99dd8e0a 66 //EE_WriteVariable(VirtAddVarTab[UDP_SERVER_LOCAL_PORT_POS], *buf++);
olympux 1:6bdc99dd8e0a 67
olympux 1:6bdc99dd8e0a 68 // MAC address
olympux 1:6bdc99dd8e0a 69 EE_WriteVariable(VirtAddVarTab[MAC_ADDRESS_POS+0], *buf++);
olympux 1:6bdc99dd8e0a 70 EE_WriteVariable(VirtAddVarTab[MAC_ADDRESS_POS+1], *buf++);
olympux 1:6bdc99dd8e0a 71 EE_WriteVariable(VirtAddVarTab[MAC_ADDRESS_POS+2], *buf++);
olympux 1:6bdc99dd8e0a 72 FLASH_Lock();
olympux 1:6bdc99dd8e0a 73
olympux 6:241d1539914a 74 DBG("Successful");
olympux 1:6bdc99dd8e0a 75 }
olympux 1:6bdc99dd8e0a 76
olympux 10:f37acffddef9 77 /*!
olympux 10:f37acffddef9 78 * Function to load module network configuration
olympux 10:f37acffddef9 79 */
olympux 1:6bdc99dd8e0a 80 void load_eeprom_network(void) {
olympux 1:6bdc99dd8e0a 81 mbed_mac_address((char *)u8mac);
olympux 1:6bdc99dd8e0a 82
olympux 5:eea03d0eb95a 83 DBG("Loading network configuration...");
olympux 1:6bdc99dd8e0a 84
olympux 1:6bdc99dd8e0a 85 EE_Init();
olympux 1:6bdc99dd8e0a 86
olympux 1:6bdc99dd8e0a 87 // check if 1st run
olympux 8:4fc4b1b5509b 88 EE_ReadVariable(VirtAddVarTab[CONFIGURED_IP_FLAG_POS], &configured_ip);
olympux 1:6bdc99dd8e0a 89 // if not first run, load network config
olympux 8:4fc4b1b5509b 90 if (configured_ip == DEFAULT_ENABLE_FLAG_VALUE) {
olympux 5:eea03d0eb95a 91 DBG("User settings");
olympux 1:6bdc99dd8e0a 92
olympux 1:6bdc99dd8e0a 93 // IP address
olympux 1:6bdc99dd8e0a 94 EE_ReadVariable(VirtAddVarTab[IP_ADDRESS_POS+0], &u16ip_addr[0]);
olympux 1:6bdc99dd8e0a 95 EE_ReadVariable(VirtAddVarTab[IP_ADDRESS_POS+1], &u16ip_addr[1]);
olympux 1:6bdc99dd8e0a 96 EE_ReadVariable(VirtAddVarTab[IP_ADDRESS_POS+2], &u16ip_addr[2]);
olympux 1:6bdc99dd8e0a 97 EE_ReadVariable(VirtAddVarTab[IP_ADDRESS_POS+3], &u16ip_addr[3]);
olympux 1:6bdc99dd8e0a 98 u8ip_addr[0] = (uint8_t)(u16ip_addr[0] & 0x00FF);
olympux 1:6bdc99dd8e0a 99 u8ip_addr[1] = (uint8_t)(u16ip_addr[1] & 0x00FF);
olympux 1:6bdc99dd8e0a 100 u8ip_addr[2] = (uint8_t)(u16ip_addr[2] & 0x00FF);
olympux 1:6bdc99dd8e0a 101 u8ip_addr[3] = (uint8_t)(u16ip_addr[3] & 0x00FF);
olympux 1:6bdc99dd8e0a 102
olympux 1:6bdc99dd8e0a 103 // IP subnet
olympux 1:6bdc99dd8e0a 104 EE_ReadVariable(VirtAddVarTab[IP_SUBNET_POS+0], &u16ip_subnet[0]);
olympux 1:6bdc99dd8e0a 105 EE_ReadVariable(VirtAddVarTab[IP_SUBNET_POS+1], &u16ip_subnet[1]);
olympux 1:6bdc99dd8e0a 106 EE_ReadVariable(VirtAddVarTab[IP_SUBNET_POS+2], &u16ip_subnet[2]);
olympux 1:6bdc99dd8e0a 107 EE_ReadVariable(VirtAddVarTab[IP_SUBNET_POS+3], &u16ip_subnet[3]);
olympux 1:6bdc99dd8e0a 108
olympux 1:6bdc99dd8e0a 109 // IP gateway
olympux 1:6bdc99dd8e0a 110 EE_ReadVariable(VirtAddVarTab[IP_GATEWAY_POS+0], &u16ip_gateway[0]);
olympux 1:6bdc99dd8e0a 111 EE_ReadVariable(VirtAddVarTab[IP_GATEWAY_POS+1], &u16ip_gateway[1]);
olympux 1:6bdc99dd8e0a 112 EE_ReadVariable(VirtAddVarTab[IP_GATEWAY_POS+2], &u16ip_gateway[2]);
olympux 1:6bdc99dd8e0a 113 EE_ReadVariable(VirtAddVarTab[IP_GATEWAY_POS+3], &u16ip_gateway[3]);
olympux 1:6bdc99dd8e0a 114
olympux 1:6bdc99dd8e0a 115 //// TCP server port
olympux 2:57d40eaa1b1b 116 //EE_ReadVariable(VirtAddVarTab[TCP_SERVER_LOCAL_PORT_POS], &tcp_server_local_port);
olympux 1:6bdc99dd8e0a 117 //// UDP server port
olympux 2:57d40eaa1b1b 118 //EE_ReadVariable(VirtAddVarTab[UDP_SERVER_LOCAL_PORT_POS], &udp_server_local_port);
olympux 1:6bdc99dd8e0a 119
olympux 1:6bdc99dd8e0a 120 // MAC address
olympux 1:6bdc99dd8e0a 121 EE_ReadVariable(VirtAddVarTab[MAC_ADDRESS_POS+0], &u16mac_addr[0]);
olympux 1:6bdc99dd8e0a 122 EE_ReadVariable(VirtAddVarTab[MAC_ADDRESS_POS+1], &u16mac_addr[1]);
olympux 1:6bdc99dd8e0a 123 EE_ReadVariable(VirtAddVarTab[MAC_ADDRESS_POS+2], &u16mac_addr[2]);
olympux 1:6bdc99dd8e0a 124 u8mac[0] = DEFAULT_MAC0; u8mac[1] = DEFAULT_MAC1; u8mac[2] = DEFAULT_MAC2;
olympux 1:6bdc99dd8e0a 125 u8mac[3] = (uint8_t)(u16mac_addr[0] & 0x00FF);
olympux 1:6bdc99dd8e0a 126 u8mac[4] = (uint8_t)(u16mac_addr[1] & 0x00FF);
olympux 1:6bdc99dd8e0a 127 u8mac[5] = (uint8_t)(u16mac_addr[2] & 0x00FF);
olympux 1:6bdc99dd8e0a 128 //FLASH_Lock();
olympux 1:6bdc99dd8e0a 129
olympux 1:6bdc99dd8e0a 130 sprintf(str_ip_addr, "%d.%d.%d.%d", u8ip_addr[0], u8ip_addr[1], u8ip_addr[2], u8ip_addr[3]);
olympux 1:6bdc99dd8e0a 131 sprintf(str_ip_subnet, "%d.%d.%d.%d", (uint8_t)u16ip_subnet[0], (uint8_t)u16ip_subnet[1], (uint8_t)u16ip_subnet[2], (uint8_t)u16ip_subnet[3]);
olympux 1:6bdc99dd8e0a 132 sprintf(str_ip_gateway, "%d.%d.%d.%d", (uint8_t)u16ip_gateway[0], (uint8_t)u16ip_gateway[1], (uint8_t)u16ip_gateway[2], (uint8_t)u16ip_gateway[3]);
olympux 14:17a44517b13d 133 sprintf(str_mac_addr, "%02X:%02X:%02X:%02X:%02X:%02X", (uint8_t)u8mac[0], (uint8_t)u8mac[1], (uint8_t)u8mac[2], (uint8_t)u8mac[3], (uint8_t)u8mac[4], (uint8_t)u8mac[5]);
olympux 1:6bdc99dd8e0a 134 }
olympux 8:4fc4b1b5509b 135 // if ip is not configured, use default addresses
olympux 1:6bdc99dd8e0a 136 else {
olympux 5:eea03d0eb95a 137 DBG("No user settings, load defaults");
olympux 1:6bdc99dd8e0a 138 u8mac[0] = DEFAULT_MAC0; u8mac[1] = DEFAULT_MAC1; u8mac[2] = DEFAULT_MAC2;
olympux 1:6bdc99dd8e0a 139 u8mac[3] = DEFAULT_MAC3; u8mac[4] = DEFAULT_MAC4; u8mac[5] = DEFAULT_MAC5;
olympux 1:6bdc99dd8e0a 140 sprintf(str_ip_addr, DEFAULT_IP_ADDRESS);
olympux 1:6bdc99dd8e0a 141 sprintf(str_ip_subnet, DEFAULT_IP_SUBNET);
olympux 1:6bdc99dd8e0a 142 sprintf(str_ip_gateway, DEFAULT_IP_GATEWAY);
olympux 1:6bdc99dd8e0a 143 }
olympux 1:6bdc99dd8e0a 144
olympux 6:241d1539914a 145 DBG("Successful");
olympux 5:eea03d0eb95a 146 DBG("IP: %s", str_ip_addr);
olympux 5:eea03d0eb95a 147 DBG("MASK: %s", str_ip_subnet);
olympux 5:eea03d0eb95a 148 DBG("GW: %s", str_ip_gateway);
olympux 5:eea03d0eb95a 149 DBG("TCP server local port: %d", tcp_server_local_port);
olympux 5:eea03d0eb95a 150 DBG("UDP server local port: %d", udp_server_local_port);
olympux 1:6bdc99dd8e0a 151 }
olympux 1:6bdc99dd8e0a 152
olympux 1:6bdc99dd8e0a 153
olympux 10:f37acffddef9 154 /*!
olympux 10:f37acffddef9 155 * Function to write settings of remote TCP server. It is only used when this device in TCP client mode.
olympux 10:f37acffddef9 156 * When enabled, this device will periodically transmit data to TCP server.
olympux 10:f37acffddef9 157 * @param <char* buf> buffer as following
olympux 10:f37acffddef9 158 * 1-byte Auto transmit flag: 'Y'
olympux 10:f37acffddef9 159 * 1-byte Auto transmit period: in seconds
olympux 10:f37acffddef9 160 * 4-byte TCP server IP address
olympux 10:f37acffddef9 161 * 2-byte TCP server port (LSB MSB)
olympux 10:f37acffddef9 162 */
olympux 1:6bdc99dd8e0a 163 void write_eeprom_tcpserver(char* buf) {
olympux 1:6bdc99dd8e0a 164 // Write network configuration
olympux 2:57d40eaa1b1b 165 // 1-byte Auto transmit flag + 1-byte Auto transmit period + 4-byte TCP server IP address + 2-byte TCP server port (LSB msb)
olympux 1:6bdc99dd8e0a 166
olympux 6:241d1539914a 167 DBG("Saving TCP server settings...");
olympux 1:6bdc99dd8e0a 168
olympux 1:6bdc99dd8e0a 169 // Unlock the Flash Program Erase controller
olympux 1:6bdc99dd8e0a 170 FLASH_Unlock();
olympux 1:6bdc99dd8e0a 171 // EEPROM Init
olympux 1:6bdc99dd8e0a 172 EE_Init();
olympux 1:6bdc99dd8e0a 173
olympux 6:241d1539914a 174 // Auto transmit flag
olympux 5:eea03d0eb95a 175 if (*buf == 'Y') {
olympux 6:241d1539914a 176 EE_WriteVariable(VirtAddVarTab[AUTO_TRANSMIT_FLAG_POS], DEFAULT_ENABLE_FLAG_VALUE);
olympux 5:eea03d0eb95a 177 }
olympux 5:eea03d0eb95a 178 else {
olympux 6:241d1539914a 179 EE_WriteVariable(VirtAddVarTab[AUTO_TRANSMIT_FLAG_POS], DEFAULT_DISABLE_FLAG_VALUE);
olympux 5:eea03d0eb95a 180 }
olympux 3:69e1c4ed69e1 181 buf++;
olympux 6:241d1539914a 182 // Auto transmit period
olympux 1:6bdc99dd8e0a 183 EE_WriteVariable(VirtAddVarTab[AUTO_TRANSMIT_TIME_PERIOD_POS], *buf++);
olympux 1:6bdc99dd8e0a 184 // IP address
olympux 1:6bdc99dd8e0a 185 EE_WriteVariable(VirtAddVarTab[TCP_SERVER_IP_ADDR_POS+0], *buf++);
olympux 1:6bdc99dd8e0a 186 EE_WriteVariable(VirtAddVarTab[TCP_SERVER_IP_ADDR_POS+1], *buf++);
olympux 1:6bdc99dd8e0a 187 EE_WriteVariable(VirtAddVarTab[TCP_SERVER_IP_ADDR_POS+2], *buf++);
olympux 1:6bdc99dd8e0a 188 EE_WriteVariable(VirtAddVarTab[TCP_SERVER_IP_ADDR_POS+3], *buf++);
olympux 1:6bdc99dd8e0a 189 // TCP server port
olympux 2:57d40eaa1b1b 190 uint16_t port;
olympux 2:57d40eaa1b1b 191 memcpy(&port, buf, 2);
olympux 2:57d40eaa1b1b 192 EE_WriteVariable(VirtAddVarTab[TCP_SERVER_PORT_POS], port);
olympux 1:6bdc99dd8e0a 193
olympux 1:6bdc99dd8e0a 194 FLASH_Lock();
olympux 1:6bdc99dd8e0a 195
olympux 6:241d1539914a 196 DBG("Successful");
olympux 1:6bdc99dd8e0a 197 }
olympux 1:6bdc99dd8e0a 198
olympux 10:f37acffddef9 199 /*!
olympux 10:f37acffddef9 200 * Function to load remote TCP server configuration
olympux 10:f37acffddef9 201 */
olympux 1:6bdc99dd8e0a 202 void load_eeprom_tcpserver(void) {
olympux 5:eea03d0eb95a 203 DBG("Checking auto update mode...");
olympux 1:6bdc99dd8e0a 204
olympux 1:6bdc99dd8e0a 205 EE_Init();
olympux 1:6bdc99dd8e0a 206
olympux 1:6bdc99dd8e0a 207 // check if 1st run
olympux 1:6bdc99dd8e0a 208 EE_ReadVariable(VirtAddVarTab[AUTO_TRANSMIT_FLAG_POS], &auto_transmit_flag);
olympux 1:6bdc99dd8e0a 209 // if not auto transmit, exit
olympux 6:241d1539914a 210 if (auto_transmit_flag == DEFAULT_ENABLE_FLAG_VALUE) {
olympux 1:6bdc99dd8e0a 211 // Time period for transmitting to server
olympux 1:6bdc99dd8e0a 212 EE_ReadVariable(VirtAddVarTab[AUTO_TRANSMIT_TIME_PERIOD_POS], &transmit_time_period);
olympux 6:241d1539914a 213 // TCP server/client enable flags, not in used
olympux 10:f37acffddef9 214 EE_ReadVariable(VirtAddVarTab[ENABLE_TCP_CLIENT], &u16enable_tcp_client);
olympux 10:f37acffddef9 215 EE_ReadVariable(VirtAddVarTab[ENABLE_TCP_SERVER], &u16enable_tcp_server);
olympux 1:6bdc99dd8e0a 216 // IP address
olympux 1:6bdc99dd8e0a 217 EE_ReadVariable(VirtAddVarTab[TCP_SERVER_IP_ADDR_POS+0], &u16server_ip_addr[0]);
olympux 1:6bdc99dd8e0a 218 EE_ReadVariable(VirtAddVarTab[TCP_SERVER_IP_ADDR_POS+1], &u16server_ip_addr[1]);
olympux 1:6bdc99dd8e0a 219 EE_ReadVariable(VirtAddVarTab[TCP_SERVER_IP_ADDR_POS+2], &u16server_ip_addr[2]);
olympux 1:6bdc99dd8e0a 220 EE_ReadVariable(VirtAddVarTab[TCP_SERVER_IP_ADDR_POS+3], &u16server_ip_addr[3]);
olympux 1:6bdc99dd8e0a 221 u8server_ip_addr[0] = (uint8_t)(u16server_ip_addr[0] & 0x00FF);
olympux 1:6bdc99dd8e0a 222 u8server_ip_addr[1] = (uint8_t)(u16server_ip_addr[1] & 0x00FF);
olympux 1:6bdc99dd8e0a 223 u8server_ip_addr[2] = (uint8_t)(u16server_ip_addr[2] & 0x00FF);
olympux 1:6bdc99dd8e0a 224 u8server_ip_addr[3] = (uint8_t)(u16server_ip_addr[3] & 0x00FF);
olympux 1:6bdc99dd8e0a 225 // TCP server port
olympux 1:6bdc99dd8e0a 226 EE_ReadVariable(VirtAddVarTab[TCP_SERVER_PORT_POS], &u16tcp_server_port);
olympux 1:6bdc99dd8e0a 227
olympux 1:6bdc99dd8e0a 228 sprintf(str_server_ip_addr, "%d.%d.%d.%d", u8server_ip_addr[0], u8server_ip_addr[1], u8server_ip_addr[2], u8server_ip_addr[3]);
olympux 6:241d1539914a 229 DBG("Enabled auto update, module is a TCP client");
olympux 5:eea03d0eb95a 230 DBG("Update every %ds to TCP server %s on port %d", transmit_time_period, str_server_ip_addr, u16tcp_server_port);
olympux 1:6bdc99dd8e0a 231 }
olympux 1:6bdc99dd8e0a 232 // if 1st run, use default addresses
olympux 1:6bdc99dd8e0a 233 else {
olympux 9:b5fbb35bbc02 234 DBG("No auto update using TCP client");
olympux 1:6bdc99dd8e0a 235 }
olympux 14:17a44517b13d 236 }
olympux 14:17a44517b13d 237
olympux 14:17a44517b13d 238 /*!
olympux 14:17a44517b13d 239 * Function to save device IP address only
olympux 14:17a44517b13d 240 */
olympux 14:17a44517b13d 241 void save_ip_addr(char *buf) {
olympux 14:17a44517b13d 242 DBG("Saving device IP address...");
olympux 14:17a44517b13d 243
olympux 14:17a44517b13d 244 // Unlock the Flash Program Erase controller */
olympux 14:17a44517b13d 245 FLASH_Unlock();
olympux 14:17a44517b13d 246 // EEPROM Init
olympux 14:17a44517b13d 247 EE_Init();
olympux 14:17a44517b13d 248
olympux 14:17a44517b13d 249 // IP address
olympux 14:17a44517b13d 250 EE_WriteVariable(VirtAddVarTab[IP_ADDRESS_POS+0], *buf++);
olympux 14:17a44517b13d 251 EE_WriteVariable(VirtAddVarTab[IP_ADDRESS_POS+1], *buf++);
olympux 14:17a44517b13d 252 EE_WriteVariable(VirtAddVarTab[IP_ADDRESS_POS+2], *buf++);
olympux 14:17a44517b13d 253 EE_WriteVariable(VirtAddVarTab[IP_ADDRESS_POS+3], *buf++);
olympux 14:17a44517b13d 254
olympux 14:17a44517b13d 255 FLASH_Lock();
olympux 14:17a44517b13d 256
olympux 14:17a44517b13d 257 DBG("Successful");
olympux 14:17a44517b13d 258 }
olympux 14:17a44517b13d 259
olympux 14:17a44517b13d 260 /*!
olympux 15:126b1eb74709 261 * Function to enable/disable the flag indicates a static IP address has been assigned
olympux 14:17a44517b13d 262 */
olympux 15:126b1eb74709 263 void set_conf() {
olympux 15:126b1eb74709 264 DBG("Enable device configured flag...");
olympux 15:126b1eb74709 265
olympux 15:126b1eb74709 266 // Unlock the Flash Program Erase controller */
olympux 15:126b1eb74709 267 FLASH_Unlock();
olympux 15:126b1eb74709 268 // EEPROM Init
olympux 15:126b1eb74709 269 EE_Init();
olympux 15:126b1eb74709 270
olympux 15:126b1eb74709 271 // erase first_run flag
olympux 15:126b1eb74709 272 EE_WriteVariable(VirtAddVarTab[CONFIGURED_IP_FLAG_POS], DEFAULT_ENABLE_FLAG_VALUE);
olympux 15:126b1eb74709 273
olympux 15:126b1eb74709 274 FLASH_Lock();
olympux 15:126b1eb74709 275
olympux 15:126b1eb74709 276 DBG("Successful");
olympux 15:126b1eb74709 277 }
olympux 14:17a44517b13d 278 void reset_conf() {
olympux 14:17a44517b13d 279 DBG("Disable device configured flag...");
olympux 14:17a44517b13d 280
olympux 14:17a44517b13d 281 // Unlock the Flash Program Erase controller */
olympux 14:17a44517b13d 282 FLASH_Unlock();
olympux 14:17a44517b13d 283 // EEPROM Init
olympux 14:17a44517b13d 284 EE_Init();
olympux 14:17a44517b13d 285
olympux 14:17a44517b13d 286 // erase first_run flag
olympux 14:17a44517b13d 287 EE_WriteVariable(VirtAddVarTab[CONFIGURED_IP_FLAG_POS], DEFAULT_DISABLE_FLAG_VALUE);
olympux 14:17a44517b13d 288
olympux 14:17a44517b13d 289 FLASH_Lock();
olympux 14:17a44517b13d 290
olympux 14:17a44517b13d 291 DBG("Successful");
olympux 14:17a44517b13d 292 }