| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- #include "AT24C128Opt.h"
- #include "../network/downlink.h"
- /*------------------------------------------------
- * 清空EEPROM的存储空间
- * ------------------------------------------------*/
- void fram_init(void)
- {
- uint8_t buff[64] = {0};
- int i = 0;
- for(i=0;i<256;i++){
- AT24CXX_Write(0+i*64,buff,sizeof(buff));
- }
- // fram_write_eeprom_powerUpFlag();
- }
- /*----------------------------------------------
- * 是否第一次上电 的写入
- * ---------------------------------------------*/
- void fram_write_eeprom_powerUpFlag(void)
- {
- uint16_t version = 0x055AA;
- AT24CXX_Write(FRAM_FIRST_POWER_ON,(uint8_t*)&version,sizeof(uint16_t));
- }
- /*----------------------------------------------
- * 是否第一次上电 读取
- * ---------------------------------------------*/
- uint16_t fram_read_eeprom_powerUpFlag(void)
- {
- uint16_t version = 0;
- AT24CXX_Read(FRAM_FIRST_POWER_ON,(uint8_t*)&version,sizeof(uint16_t));
- return version;
- }
- /*----------------------------------------------
- * EEPROM 版本号的写入
- * ---------------------------------------------*/
- void fram_write_eeprom_version(void)
- {
- uint8_t version = 0x01;
- AT24CXX_Write(FRAM_VERSION,&version,1);
- }
- /*----------------------------------------------
- * EEPROM 版本号的读取
- * ---------------------------------------------*/
- uint8_t fram_read_eeprom_version(void)
- {
- uint8_t version = 0;
- AT24CXX_Read(FRAM_VERSION,&version,1);
- return version;
- }
- /*----------------------------------------------
- * 升级标志的写入
- * --------------------------------------------*/
- void fram_write_update_flag(void)
- {
- uint8_t flag = GATEWAY_UPDATE_FLAG;
- AT24CXX_Write(FRAM_UPDATE_FLAG,&flag,1);
- }
- /*----------------------------------------------
- * 配置信息标志的初始化
- * ---------------------------------------------*/
- void fram_init_config_msg(void)
- {
- GateConfigMsg *gconfigmsg = &(g_firmwareMsg.gatewayMsg.configmsg);
- gconfigmsg->bInit = 0;
- gconfigmsg->coll_num = 0;
- gconfigmsg->sqare = 0;
- AT24CXX_Write(FRAM_CONFIG_MSG,(uint8_t*)gconfigmsg,sizeof(GateConfigMsg));
- }
- /*-----------------------------------------------
- * 配置信息标志的写入
- * ----------------------------------------------*/
- void fram_write_config_msg(uint16_t flag)
- {
- GateConfigMsg *gconfigmsg = &(g_firmwareMsg.gatewayMsg.configmsg);
- g_firmwareMsg.gatewayMsg.configmsg.bInit = flag;
- AT24CXX_Write(FRAM_CONFIG_MSG,(uint8_t*)gconfigmsg,sizeof(GateConfigMsg));
- }
- /*------------------------------------------------
- * 配置信息标志的读取
- * -----------------------------------------------*/
- uint8_t fram_read_config_msg(void)
- {
- GateConfigMsg *gconfigmsg = &(g_firmwareMsg.gatewayMsg.configmsg);
- downlink_config.config_flag = 1;
- // downlink_config.collect_num = 0;
- AT24CXX_Read(FRAM_CONFIG_MSG,(uint8_t*)gconfigmsg,sizeof(GateConfigMsg));
- downlink_config.config_flag = 1;//gconfigmsg->bInit&0xFF;
- // downlink_config.collect_num = gconfigmsg->coll_num;
- return downlink_config.config_flag;
- }
- /*-------------------------------------------------
- * mqqtt ip prot的初始化
- * ----------------------------------------------------*/
- void fram_init_mqtt_msg(void)
- {
- MqttIdPort *mqttMsg = &(g_firmwareMsg.mqttidport);
- mqttMsg->flag = 0;
- memset(mqttMsg,0,sizeof(MqttIdPort));
- AT24CXX_Write(FRAM_MQTT_MSG,(uint8_t*)mqttMsg,sizeof(MqttIdPort));
- }
- /*-------------------------------------------------
- * mqqtt ip prot的写 入
- * ----------------------------------------------------*/
- void fram_write_mqtt_msg(void)
- {
- MqttIdPort *mqttMsg = &(g_firmwareMsg.mqttidport);
- AT24CXX_Write(FRAM_MQTT_MSG,(uint8_t*)mqttMsg,sizeof(MqttIdPort));
- }
- /*-------------------------------------------------
- * mqqtt ip prot的初始化
- * ----------------------------------------------------*/
- void fram_read_mqtt_msg(void)
- {
- MqttIdPort *mqttMsg = &(g_firmwareMsg.mqttidport);
- AT24CXX_Read(FRAM_MQTT_MSG,(uint8_t*)mqttMsg,sizeof(MqttIdPort));
- }
- /*-----------------------------------------------
- * 网关的硬件信息读取
- * -----------------------------------------------*/
- void fram_read_gateway_hardware_msg(void)
- {
- GateHareWareMsg *msg = &(g_firmwareMsg.gatewayMsg.hardwareMsg);
- downlink_config.gateway_id = 0x000000;
- AT24CXX_Read(FRAM_GATWAY_HARDWARE_MSG,(uint8_t*)msg,sizeof(GateHareWareMsg));
- downlink_config.gateway_id = msg->gateway_sn;
- }
- /*-----------------------------------------------
- * 网关的硬件信息写入
- * -----------------------------------------------*/
- void fram_write_gateway_hardware_msg(void)
- {
- GateHareWareMsg *msg = &(g_firmwareMsg.gatewayMsg.hardwareMsg);
- AT24CXX_Write(FRAM_GATWAY_HARDWARE_MSG,(uint8_t*)msg,sizeof(GateHareWareMsg));
- }
- /*----------------------------------------------
- * 网关信息的初始化
- * ---------------------------------------------*/
- void fram_init_gateway_msg(void)
- {
- g_firmwareMsg.gatewayMsg.configmsg.coll_num = 0;
- g_firmwareMsg.gatewayMsg.configmsg.bInit = 0;
- g_firmwareMsg.gatewayMsg.gate_resetnum = 0;
- fram_write_config_msg(0);
- fram_init_gateway_resetnum();
- }
- /*----------------------------------------------------
- * 网关复位次数的初始化
- * ---------------------------------------------------*/
- void fram_init_gateway_resetnum(void)
- {
- uint32_t num = 0;
-
- return;
- g_firmwareMsg.gatewayMsg.gate_resetnum = 0;
- AT24CXX_Write(FRAM_GATWAY_RESETNUM,(uint8_t*)&num,sizeof(uint32_t));
- }
- /*----------------------------------------------------
- * 网关复位次数的写入
- * ---------------------------------------------------*/
- void fram_wirte_gateway_resetnum(void)
- {
- uint32_t num = 0;
-
- return;
- num = g_firmwareMsg.gatewayMsg.gate_resetnum;
- AT24CXX_Write(FRAM_GATWAY_RESETNUM,(uint8_t*)&num,sizeof(uint32_t));
- }
- /*----------------------------------------------------
- * 网关复位次数的读取
- * ---------------------------------------------------*/
- void fram_read_gateway_resetnum(void)
- {
- uint32_t num = 0;
- AT24CXX_Read(FRAM_GATWAY_RESETNUM,(uint8_t*)&num,sizeof(uint32_t));
- g_firmwareMsg.gatewayMsg.gate_resetnum = num;
- }
- /*------------------------------------------------------
- * 网关软件版本的信息初始化
- * 固件信息格式 :DDDDFNNN:
- * DDDD(设备类型):0x0101:网关A 0x0102:网关B 0x0201:采集器1 0x0202:采集器2
- * F(固件类型):0x01:bootloader版本 0x02:pt版本 0x03:app版本 0xF:合成版本
- * NNN:0x001 表示第1个版本 0x002:表示第2个版本
- * -----------------------------------------------------*/
- void fram_init_gateway_version(void)
- {
- GateVersionMsg *msg = NULL;
- g_firmwareExpl.dd = GATEWAY_DEVICE_TYPE; //网关A
- g_firmwareExpl.ff = GATEWAY_APP_TYPE; //app版本
- g_firmwareExpl.nn = GATEWAY_APP_VERSION; // 第一个版本
- fram_read_gateway_version();
- msg = &(g_firmwareMsg.gatewayMsg.verMsg);
-
- if(msg->gate_appVr != (((uint32_t)g_firmwareExpl.dd<<16)|((uint16_t)g_firmwareExpl.ff<<12)|g_firmwareExpl.nn)){
- msg->gate_appVr = ((uint32_t)g_firmwareExpl.dd<<16)|((uint16_t)g_firmwareExpl.ff<<12)|g_firmwareExpl.nn;
- // msg->gate_appVr2 = msg->gate_appVr;
- // msg->gate_appVr3 = msg->gate_appVr;
- fram_write_gateway_version();
- }
- }
- /*----------------------------------------------------
- * 网关 版本信息的读取
- * ---------------------------------------------------*/
- void fram_write_gateway_version(void)
- {
- GateVersionMsg *msg = NULL;
- msg = &(g_firmwareMsg.gatewayMsg.verMsg);
- AT24CXX_Write(FRAM_GATWAY_VER_MSG,(uint8_t*)msg,sizeof(GateVersionMsg));
- }
- /*----------------------------------------------------
- * 网关 版本信息的读取
- * ---------------------------------------------------*/
- void fram_read_gateway_version(void)
- {
- GateVersionMsg *msg = NULL;
- msg = &(g_firmwareMsg.gatewayMsg.verMsg);
- AT24CXX_Read(FRAM_GATWAY_VER_MSG,(uint8_t*)msg,sizeof(GateVersionMsg));
- }
- /*--------------------------------------------------------
- * 液位仪信息初始化
- * --------------------------------------------------------*/
- void fram_init_oil_msg(void)
- {
- oilReadMsg *msg = &g_oilReadMsg;
- g_oilReadMsg.bInit = 0;
- g_oilReadMsg.paraLen = 0;
- AT24CXX_Read(FRAM_OILINIT_MSG,(uint8_t*)msg,sizeof(oilReadMsg));
- }
- /*--------------------------------------------------------
- * 液位仪信息写入
- * --------------------------------------------------------*/
- void fram_write_oil_msg(void)
- {
- oilReadMsg *msg = &(g_oilReadMsg);
- AT24CXX_Write(FRAM_OILINIT_MSG,(uint8_t*)msg,sizeof(oilReadMsg));
- }
- /*--------------------------------------------------------
- * 液位仪信息读取
- * --------------------------------------------------------*/
- void fram_read_oil_msg(void)
- {
- oilReadMsg *msg = NULL;
- msg = &(g_oilReadMsg);
- AT24CXX_Read(FRAM_OILINIT_MSG,(uint8_t*)msg,sizeof(oilReadMsg));
- }
|