Used with eeprom_flash to write network configuration to STM32F103 flash
Fork of my_eeprom_funcs by
Diff: my_eeprom_funcs.cpp
- Revision:
- 6:241d1539914a
- Parent:
- 5:eea03d0eb95a
- Child:
- 7:60f87ff3da60
--- a/my_eeprom_funcs.cpp Tue Oct 21 20:38:38 2014 +0000 +++ b/my_eeprom_funcs.cpp Fri Oct 24 21:27:52 2014 +0000 @@ -32,6 +32,10 @@ FLASH_Unlock(); // EEPROM Init EE_Init(); + + // erase first_run flag + EE_WriteVariable(VirtAddVarTab[FIRST_RUN_FLAG_POS], DEFAULT_ENABLE_FLAG_VALUE); + // IP address EE_WriteVariable(VirtAddVarTab[IP_ADDRESS_POS+0], *buf++); EE_WriteVariable(VirtAddVarTab[IP_ADDRESS_POS+1], *buf++); @@ -55,16 +59,13 @@ //// UDP server port, not used //EE_WriteVariable(VirtAddVarTab[UDP_SERVER_LOCAL_PORT_POS], *buf++); - // erase first_run flag - EE_WriteVariable(VirtAddVarTab[FIRST_RUN_FLAG_POS], 0xA5A5); - // MAC address EE_WriteVariable(VirtAddVarTab[MAC_ADDRESS_POS+0], *buf++); EE_WriteVariable(VirtAddVarTab[MAC_ADDRESS_POS+1], *buf++); EE_WriteVariable(VirtAddVarTab[MAC_ADDRESS_POS+2], *buf++); FLASH_Lock(); - DBG("Success"); + DBG("Successful"); } void load_eeprom_network(void) { @@ -77,7 +78,7 @@ // check if 1st run EE_ReadVariable(VirtAddVarTab[FIRST_RUN_FLAG_POS], &first_run); // if not first run, load network config - if (first_run == 0xA5A5) { + if (first_run == DEFAULT_ENABLE_FLAG_VALUE) { DBG("User settings"); // IP address @@ -106,8 +107,6 @@ //EE_ReadVariable(VirtAddVarTab[TCP_SERVER_LOCAL_PORT_POS], &tcp_server_local_port); //// UDP server port //EE_ReadVariable(VirtAddVarTab[UDP_SERVER_LOCAL_PORT_POS], &udp_server_local_port); - - // First run flag, already read above // MAC address EE_ReadVariable(VirtAddVarTab[MAC_ADDRESS_POS+0], &u16mac_addr[0]); @@ -133,7 +132,7 @@ sprintf(str_ip_gateway, DEFAULT_IP_GATEWAY); } - DBG("Success"); + DBG("Successful"); DBG("IP: %s", str_ip_addr); DBG("MASK: %s", str_ip_subnet); DBG("GW: %s", str_ip_gateway); @@ -143,32 +142,33 @@ /* -* TCP server info, only when this device in TCP client mode +* TCP server setting, only when this device in TCP client mode * This device auto transmits data to TCP server */ void write_eeprom_tcpserver(char* buf) { // Write network configuration // 1-byte Auto transmit flag + 1-byte Auto transmit period + 4-byte TCP server IP address + 2-byte TCP server port (LSB msb) - DBG("Saving TCP server info"); + DBG("Saving TCP server settings..."); // Unlock the Flash Program Erase controller FLASH_Unlock(); // EEPROM Init EE_Init(); - // Auto transmit + // Auto transmit flag if (*buf == 'Y') { - EE_WriteVariable(VirtAddVarTab[AUTO_TRANSMIT_FLAG_POS], 0xA5A5); - //EE_WriteVariable(VirtAddVarTab[ENABLE_TCP_CLIENT], 0xA5A5); // enable TCP client - //EE_WriteVariable(VirtAddVarTab[ENABLE_TCP_SERVER], 0xAAAA); // disable TCP server + EE_WriteVariable(VirtAddVarTab[AUTO_TRANSMIT_FLAG_POS], DEFAULT_ENABLE_FLAG_VALUE); + //EE_WriteVariable(VirtAddVarTab[ENABLE_TCP_CLIENT], DEFAULT_ENABLE_FLAG_VALUE); // enable TCP client + //EE_WriteVariable(VirtAddVarTab[ENABLE_TCP_SERVER], DEFAULT_DISABLE_FLAG_VALUE); // disable TCP server } else { - EE_WriteVariable(VirtAddVarTab[AUTO_TRANSMIT_FLAG_POS], 0xAAAA); - //EE_WriteVariable(VirtAddVarTab[ENABLE_TCP_CLIENT], 0xAAAA); // disable TCP client - //EE_WriteVariable(VirtAddVarTab[ENABLE_TCP_SERVER], 0xA5A5); // enable TCP server + EE_WriteVariable(VirtAddVarTab[AUTO_TRANSMIT_FLAG_POS], DEFAULT_DISABLE_FLAG_VALUE); + //EE_WriteVariable(VirtAddVarTab[ENABLE_TCP_CLIENT], DEFAULT_DISABLE_FLAG_VALUE); // disable TCP client + //EE_WriteVariable(VirtAddVarTab[ENABLE_TCP_SERVER], DEFAULT_ENABLE_FLAG_VALUE); // enable TCP server } buf++; + // Auto transmit period EE_WriteVariable(VirtAddVarTab[AUTO_TRANSMIT_TIME_PERIOD_POS], *buf++); // IP address EE_WriteVariable(VirtAddVarTab[TCP_SERVER_IP_ADDR_POS+0], *buf++); @@ -182,7 +182,7 @@ FLASH_Lock(); - DBG("Success"); + DBG("Successful"); } void load_eeprom_tcpserver(void) { @@ -193,11 +193,12 @@ // check if 1st run EE_ReadVariable(VirtAddVarTab[AUTO_TRANSMIT_FLAG_POS], &auto_transmit_flag); // if not auto transmit, exit - if (auto_transmit_flag == 0xA5A5) { + if (auto_transmit_flag == DEFAULT_ENABLE_FLAG_VALUE) { // Time period for transmitting to server EE_ReadVariable(VirtAddVarTab[AUTO_TRANSMIT_TIME_PERIOD_POS], &transmit_time_period); - EE_ReadVariable(VirtAddVarTab[ENABLE_TCP_CLIENT], &u16enable_tcp_client); - EE_ReadVariable(VirtAddVarTab[ENABLE_TCP_SERVER], &u16enable_tcp_server); + // TCP server/client enable flags, not in used + //EE_ReadVariable(VirtAddVarTab[ENABLE_TCP_CLIENT], &u16enable_tcp_client); + //EE_ReadVariable(VirtAddVarTab[ENABLE_TCP_SERVER], &u16enable_tcp_server); // IP address EE_ReadVariable(VirtAddVarTab[TCP_SERVER_IP_ADDR_POS+0], &u16server_ip_addr[0]); EE_ReadVariable(VirtAddVarTab[TCP_SERVER_IP_ADDR_POS+1], &u16server_ip_addr[1]); @@ -207,20 +208,18 @@ u8server_ip_addr[1] = (uint8_t)(u16server_ip_addr[1] & 0x00FF); u8server_ip_addr[2] = (uint8_t)(u16server_ip_addr[2] & 0x00FF); u8server_ip_addr[3] = (uint8_t)(u16server_ip_addr[3] & 0x00FF); - // TCP server port EE_ReadVariable(VirtAddVarTab[TCP_SERVER_PORT_POS], &u16tcp_server_port); 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]); - //DBG("Enabled auto update, module is a TCP client"); - DBG("Enabled auto update"); + DBG("Enabled auto update, module is a TCP client"); DBG("Update every %ds to TCP server %s on port %d", transmit_time_period, str_server_ip_addr, u16tcp_server_port); } // if 1st run, use default addresses else { DBG("No auto update"); - //DBG("Module is a TCP server"); - u16enable_tcp_client = 0xAAAA; // disable TCP client - u16enable_tcp_server = 0xA5A5; // enable TCP server + DBG("Module is not a TCP client"); + //u16enable_tcp_client = 0xAAAA; // disable TCP client + //u16enable_tcp_server = 0xA5A5; // enable TCP server } } \ No newline at end of file