/************************************************************ * Utils.h * general module of system utility functions **************************************************************/ #include "include.h" #include #include #include #include #include "Common/Utilities/Utils.h" //#include #include "driverlib/hibernate.h" #include #include #include "drivers/Flash_ram/MCU_E2Prom.h" //***************************************************************************** /*#define MAX_MEM_LOG 100 int freeIndex=0,malloc_index=0; uint32_t malloc_size[MAX_MEM_LOG+1]; uint32_t malloc_time[MAX_MEM_LOG+1]; void * malloc_addr[MAX_MEM_LOG+1]; void * free_addr[MAX_MEM_LOG+1];*/ //uint32_t total_allocated = 0; void *my_malloc(size_t _size) { void * addr = malloc (_size); if (_size == 0) return addr; /* int i; for (i=0; i< MAX_MEM_LOG;i++) { if (malloc_time[i] == 0) { malloc_index = i; break; } } assert (malloc_index400)) { malloc_addr[malloc_index] = addr; malloc_size[malloc_index] = _size; malloc_time[malloc_index] = msec_millisecondCounter; if (malloc_index++>=MAX_MEM_LOG) malloc_index = 0; }*/ return addr; } int allocated_size = 0; void my_free(void *_ptr) { //int i; free(_ptr); if (_ptr) { /* for (i=0; i< MAX_MEM_LOG;i++) { if ( malloc_addr[i] == _ptr) { malloc_addr[i] = 0; malloc_time[i] = 0; malloc_size[i] = 0; break; } } if (i==MAX_MEM_LOG) { // LOG_ERROR(i,"free error"); return; } allocated_size = 0; // for (i=0; i< MAX_MEM_LOG;i++) // allocated_size+=malloc_size[i]; * */ // free_addr[freeIndex] = _ptr; // if (freeIndex++>=MAX_MEM_LOG) // freeIndex = 0; } } //***************************************************************************** // // Init WD timer // //***************************************************************************** void InitWatchdog(uint32_t clock) { // // Enable the watchdog interrupt. // #ifdef WATCHDOG MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_WDOG0); ROM_WatchdogIntClear(WATCHDOG0_BASE); ROM_WatchdogIntTypeSet(WATCHDOG0_BASE,0); //interrupt, not NMI ROM_IntEnable(INT_WATCHDOG); // // Set the period of the watchdog timer. // ROM_WatchdogReloadSet(WATCHDOG0_BASE, clock); // // Enable reset generation from the watchdog timer. // ROM_WatchdogResetEnable(WATCHDOG0_BASE); // // Enable the watchdog timer. // ROM_WatchdogEnable(WATCHDOG0_BASE); #endif } void utilsInit(uint32_t ui32SysClock) { // Configure Hibernate module clock. // HibernateEnableExpClk(ui32SysClock); // Enable RTC mode. // HibernateRTCEnable(); // // Configure the hibernate module counter to 24-hour calendar mode. // // HibernateCounterMode(HIBERNATE_COUNTER_24HR); // Configure the hibernate module counter to RTC counter mode. HibernateCounterMode(HIBERNATE_COUNTER_24HR); //#define STARTTIME 1564403262 // Seconds_set(STARTTIME); } void utilsUpdateDateTime(uint32_t StartTime) { Seconds_set(StartTime); } void utilsStoreLocalTime() { time_t time_store = umktime(&LocalTime); MCU_E2PromProgram(EEPROM_LOCAL_TIME,time_store); } uint32_t UsersysTickGet (void) { uint32_t tick = 0; // tick = SysTickValueGet(); tick = HibernateRTCSSGet()*10000/0x8000; return tick; } //***************************************************************************** // // The interrupt handler for the watchdog. This feeds the dog (so that the // processor does not get reset) and winks the LED connected to GPIO B3. // //***************************************************************************** void WatchdogIntHandler(void) { // // Clear the watchdog interrupt. // ROM_WatchdogIntClear(WATCHDOG0_BASE); } bool sendDataToHost = false; void UtilsSetCommunicationOk(void) { sendDataToHost = true; }