Used with eeprom_flash to write network configuration to STM32F103 flash

Dependents:   F103-Web-Server

Fork of my_eeprom_funcs by Chau Vo

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