Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of my_eeprom_funcs by
my_eeprom_funcs.cpp@15:126b1eb74709, 2016-06-16 (annotated)
- 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?
| User | Revision | Line number | New 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 | } | 
