Esempio n. 1
0
/**
 * \fn BOOL HandleModConEEPROMProgram(void)
 * \brief Program a byte in EEPROM by given address.
 * \return TRUE if EEPROM program successfully. 
 */
BOOL HandleModConEEPROMProgram(void)
{ 
  UINT8 volatile * const address = (UINT8 volatile *)Packet_Parameter12;
    
  if ((UINT16)address >= MODCON_EEPROM_ADDRESS_BEGIN && (UINT16)address <= MODCON_EEPROM_ADDRESS_END)
  {    
    if (address != (UINT8 volatile * const)MODCON_EEPROM_ADDRESS_END)
    {
      if (!EEPROM_Write8(address, Packet_Parameter3))
      {
#ifndef NO_DEBUG
        DEBUG(__LINE__, ERR_EEPROM_WRITE);
#endif
        return bFALSE;      
      }
      return bTRUE;
    }
    if (!EEPROM_Erase())
    {
#ifndef NO_DEBUG
      DEBUG(__LINE__, ERR_EEPROM_ERASE);
#endif
      return bFALSE;            
    }
    return bTRUE;
  }
  return bFALSE;
}
Esempio n. 2
0
static rt_bool_t calibration_data_save(calculate_data_t *data)
{
    rt_uint8_t count;
    rt_uint8_t *buf;
    count = sizeof(calculate_data_t) + 1;
    buf = (rt_uint8_t *)rt_malloc(count);
    buf[0] = CALIBRATION_DATA_MAGIC;
    rt_memcpy(&buf[1], data, count - 1);
    /* power up the eeprom */
    EEPROM_PowerDown(DISABLE);
    /* erase the page for touch data */
    EEPROM_Erase(CALIBRATION_DATA_PAGE);
    EEPROM_Write(0, CALIBRATION_DATA_PAGE, buf, MODE_8_BIT, count);
    rt_free(buf);
    return RT_TRUE;
}