8 #include "DrvFlash.hpp"
12 NetDefs::MAC_ADDR macAddr;
13 NetDefs::NET_CONFIG netConfig;
14 uint32_t validityCheck;
17 const static FLASH_SLOT* flashSlot = (FLASH_SLOT*) 0x080E0000;
18 const static uint32_t VALIDITY_CHECK_VALUE = 0x16AD06FD;
20 void storeSlotToFlash(FLASH_SLOT& slot) {
22 DrvFlash::erasePage(11);
23 DrvFlash::write(flashSlot, &slot,
sizeof(slot));
27 void storeDefaultConfigToFlash() {
29 slot.macAddr.v[0] = 0x00;
30 slot.macAddr.v[1] = 0x1f;
31 slot.macAddr.v[2] = 0xd0;
32 slot.macAddr.v[3] = 0x3e;
33 slot.macAddr.v[4] = 0xaa;
34 slot.macAddr.v[5] = 0x95;
35 memset(slot.netConfig.deviceName, 0,
sizeof(slot.netConfig.deviceName));
36 strcpy(slot.netConfig.deviceName,
"EMB");
37 slot.netConfig.ipAddr.val = (0) + (0 << 8) + (0 << 16) + (0 << 24);
38 slot.netConfig.mask.val = (0) + (0 << 8) + (0 << 16) + (0 << 24);
39 slot.netConfig.gatewayIpAddr.val = (0) + (0 << 8) + (0 << 16) + (0 << 24);
40 slot.netConfig.dnsIpAddr.val = (0) + (0 << 8) + (0 << 16) + (0 << 24);
41 slot.netConfig.dhcpEnabled =
true;
42 slot.validityCheck = VALIDITY_CHECK_VALUE;
43 storeSlotToFlash(slot);
46 void Net::loadMac(NetDefs::MAC_ADDR& macAddr) {
47 if (flashSlot->validityCheck != VALIDITY_CHECK_VALUE) {
48 storeDefaultConfigToFlash();
50 macAddr = flashSlot->macAddr;
53 void Net::storeMac(NetDefs::MAC_ADDR& macAddr) {
55 slot.macAddr = macAddr;
56 slot.netConfig = Net::sConfig;
57 slot.validityCheck = VALIDITY_CHECK_VALUE;
58 storeSlotToFlash(slot);
61 void Net::loadConfig(NetDefs::NET_CONFIG& config) {
62 if (flashSlot->validityCheck != VALIDITY_CHECK_VALUE) {
63 storeDefaultConfigToFlash();
66 config = flashSlot->netConfig;
69 void Net::storeConfig(NetDefs::NET_CONFIG& config) {
71 slot.macAddr = Net::sMacAddr;
72 slot.netConfig = config;
73 slot.validityCheck = VALIDITY_CHECK_VALUE;
74 storeSlotToFlash(slot);
79 void LibRtc::getCurrentDateAndTime(DATE_AND_TIME* dateAndTime) {
80 dateAndTime->date.dayOfMonth = 18;
81 dateAndTime->date.month = AUGUST;
82 dateAndTime->date.year = 2000;
83 updateDayOfWeek(&dateAndTime->date);
84 updateDayOfYear(&dateAndTime->date);
86 dateAndTime->time.ms = 0;
87 dateAndTime->time.sec = 0;
88 dateAndTime->time.min = 0;
89 dateAndTime->time.hour = 12;
92 void LibRtc::setCurrentDateAndTime(DATE_AND_TIME* dateAndTime) {