/*********************************************************************
 * @fn      OADTarget_eraseFlash
 *
 * @brief   Erase selected flash page.
 *
 * @param   page - the page to erase.
 *
 * @return  None.
 */
void OADTarget_eraseFlash(uint8_t page)
{
  OADTarget_disableCache();
  
  ROM_FlashSectorErase((uint32_t)FLASH_ADDRESS(page, 0)); 
  
  OADTarget_enableCache();
}
/*********************************************************************
 * @fn      OADTarget_writeFlash
 *
 * @brief   Write data to flash.
 *
 * @param   page   - page to write to in flash
 * @param   offset - offset into flash page to begin writing
 * @param   pBuf   - pointer to buffer of data to write
 * @param   len    - length of data to write in bytes
 *
 * @return  None.
 */
void OADTarget_writeFlash(uint8_t page, uint32_t offset, uint8_t *pBuf, 
                          uint16_t len)
{
  OADTarget_disableCache();
  
  ROM_FlashProgram( pBuf, (uint32_t)FLASH_ADDRESS(page, offset), len );
  
  OADTarget_enableCache();
}
/*********************************************************************
 * @fn      OADTarget_eraseFlash
 *
 * @brief   Erase selected flash page.
 *
 * @param   page - the page to erase.
 *
 * @return  None.
 */
void OADTarget_eraseFlash(uint8_t page)
{
  uint8_t cacheState;
  
  cacheState = OADTarget_disableCache();
  
  FlashSectorErase((uint32_t)FLASH_ADDRESS(page, 0)); 
  
  OADTarget_enableCache(cacheState);
}