mbed os with nrf51 internal bandgap enabled to read battery level

Dependents:   BLE_file_test BLE_Blink ExternalEncoder

Committer:
elessair
Date:
Sun Oct 23 15:10:02 2016 +0000
Revision:
0:f269e3021894
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elessair 0:f269e3021894 1 /*-----------------------------------------------------------------------*/
elessair 0:f269e3021894 2 /* Low level disk I/O module skeleton for FatFs (C)ChaN, 2014 */
elessair 0:f269e3021894 3 /*-----------------------------------------------------------------------*/
elessair 0:f269e3021894 4 /* If a working storage control module is available, it should be */
elessair 0:f269e3021894 5 /* attached to the FatFs via a glue function rather than modifying it. */
elessair 0:f269e3021894 6 /* This is an example of glue functions to attach various exsisting */
elessair 0:f269e3021894 7 /* storage control modules to the FatFs module with a defined API. */
elessair 0:f269e3021894 8 /*-----------------------------------------------------------------------*/
elessair 0:f269e3021894 9
elessair 0:f269e3021894 10 #include "diskio.h"
elessair 0:f269e3021894 11 #include "mbed_debug.h"
elessair 0:f269e3021894 12 #include "FATFileSystem.h"
elessair 0:f269e3021894 13
elessair 0:f269e3021894 14 using namespace mbed;
elessair 0:f269e3021894 15
elessair 0:f269e3021894 16 /*-----------------------------------------------------------------------*/
elessair 0:f269e3021894 17 /* Get Drive Status */
elessair 0:f269e3021894 18 /*-----------------------------------------------------------------------*/
elessair 0:f269e3021894 19
elessair 0:f269e3021894 20 DSTATUS disk_status (
elessair 0:f269e3021894 21 BYTE pdrv /* Physical drive nmuber to identify the drive */
elessair 0:f269e3021894 22 )
elessair 0:f269e3021894 23 {
elessair 0:f269e3021894 24 debug_if(FFS_DBG, "disk_status on pdrv [%d]\n", pdrv);
elessair 0:f269e3021894 25 return (DSTATUS)FATFileSystem::_ffs[pdrv]->disk_status();
elessair 0:f269e3021894 26 }
elessair 0:f269e3021894 27
elessair 0:f269e3021894 28 /*-----------------------------------------------------------------------*/
elessair 0:f269e3021894 29 /* Inidialize a Drive */
elessair 0:f269e3021894 30 /*-----------------------------------------------------------------------*/
elessair 0:f269e3021894 31
elessair 0:f269e3021894 32 DSTATUS disk_initialize (
elessair 0:f269e3021894 33 BYTE pdrv /* Physical drive nmuber to identify the drive */
elessair 0:f269e3021894 34 )
elessair 0:f269e3021894 35 {
elessair 0:f269e3021894 36 debug_if(FFS_DBG, "disk_initialize on pdrv [%d]\n", pdrv);
elessair 0:f269e3021894 37 return (DSTATUS)FATFileSystem::_ffs[pdrv]->disk_initialize();
elessair 0:f269e3021894 38 }
elessair 0:f269e3021894 39
elessair 0:f269e3021894 40 /*-----------------------------------------------------------------------*/
elessair 0:f269e3021894 41 /* Read Sector(s) */
elessair 0:f269e3021894 42 /*-----------------------------------------------------------------------*/
elessair 0:f269e3021894 43
elessair 0:f269e3021894 44 DRESULT disk_read (
elessair 0:f269e3021894 45 BYTE pdrv, /* Physical drive nmuber to identify the drive */
elessair 0:f269e3021894 46 BYTE* buff, /* Data buffer to store read data */
elessair 0:f269e3021894 47 DWORD sector, /* Sector address in LBA */
elessair 0:f269e3021894 48 UINT count /* Number of sectors to read */
elessair 0:f269e3021894 49 )
elessair 0:f269e3021894 50 {
elessair 0:f269e3021894 51 debug_if(FFS_DBG, "disk_read(sector %d, count %d) on pdrv [%d]\n", sector, count, pdrv);
elessair 0:f269e3021894 52 if (FATFileSystem::_ffs[pdrv]->disk_read((uint8_t*)buff, sector, count))
elessair 0:f269e3021894 53 return RES_PARERR;
elessair 0:f269e3021894 54 else
elessair 0:f269e3021894 55 return RES_OK;
elessair 0:f269e3021894 56 }
elessair 0:f269e3021894 57
elessair 0:f269e3021894 58 /*-----------------------------------------------------------------------*/
elessair 0:f269e3021894 59 /* Write Sector(s) */
elessair 0:f269e3021894 60 /*-----------------------------------------------------------------------*/
elessair 0:f269e3021894 61
elessair 0:f269e3021894 62 #if _USE_WRITE
elessair 0:f269e3021894 63 DRESULT disk_write (
elessair 0:f269e3021894 64 BYTE pdrv, /* Physical drive nmuber to identify the drive */
elessair 0:f269e3021894 65 const BYTE* buff, /* Data to be written */
elessair 0:f269e3021894 66 DWORD sector, /* Sector address in LBA */
elessair 0:f269e3021894 67 UINT count /* Number of sectors to write */
elessair 0:f269e3021894 68 )
elessair 0:f269e3021894 69 {
elessair 0:f269e3021894 70 debug_if(FFS_DBG, "disk_write(sector %d, count %d) on pdrv [%d]\n", sector, count, pdrv);
elessair 0:f269e3021894 71 if (FATFileSystem::_ffs[pdrv]->disk_write((uint8_t*)buff, sector, count))
elessair 0:f269e3021894 72 return RES_PARERR;
elessair 0:f269e3021894 73 else
elessair 0:f269e3021894 74 return RES_OK;
elessair 0:f269e3021894 75 }
elessair 0:f269e3021894 76 #endif
elessair 0:f269e3021894 77
elessair 0:f269e3021894 78 /*-----------------------------------------------------------------------*/
elessair 0:f269e3021894 79 /* Miscellaneous Functions */
elessair 0:f269e3021894 80 /*-----------------------------------------------------------------------*/
elessair 0:f269e3021894 81
elessair 0:f269e3021894 82 #if _USE_IOCTL
elessair 0:f269e3021894 83 DRESULT disk_ioctl (
elessair 0:f269e3021894 84 BYTE pdrv, /* Physical drive nmuber (0..) */
elessair 0:f269e3021894 85 BYTE cmd, /* Control code */
elessair 0:f269e3021894 86 void* buff /* Buffer to send/receive control data */
elessair 0:f269e3021894 87 )
elessair 0:f269e3021894 88 {
elessair 0:f269e3021894 89 debug_if(FFS_DBG, "disk_ioctl(%d)\n", cmd);
elessair 0:f269e3021894 90 switch(cmd) {
elessair 0:f269e3021894 91 case CTRL_SYNC:
elessair 0:f269e3021894 92 if(FATFileSystem::_ffs[pdrv] == NULL) {
elessair 0:f269e3021894 93 return RES_NOTRDY;
elessair 0:f269e3021894 94 } else if(FATFileSystem::_ffs[pdrv]->disk_sync()) {
elessair 0:f269e3021894 95 return RES_ERROR;
elessair 0:f269e3021894 96 }
elessair 0:f269e3021894 97 return RES_OK;
elessair 0:f269e3021894 98 case GET_SECTOR_COUNT:
elessair 0:f269e3021894 99 if(FATFileSystem::_ffs[pdrv] == NULL) {
elessair 0:f269e3021894 100 return RES_NOTRDY;
elessair 0:f269e3021894 101 } else {
elessair 0:f269e3021894 102 DWORD res = FATFileSystem::_ffs[pdrv]->disk_sectors();
elessair 0:f269e3021894 103 if(res > 0) {
elessair 0:f269e3021894 104 *((DWORD*)buff) = res; // minimum allowed
elessair 0:f269e3021894 105 return RES_OK;
elessair 0:f269e3021894 106 } else {
elessair 0:f269e3021894 107 return RES_ERROR;
elessair 0:f269e3021894 108 }
elessair 0:f269e3021894 109 }
elessair 0:f269e3021894 110 case GET_BLOCK_SIZE:
elessair 0:f269e3021894 111 *((DWORD*)buff) = 1; // default when not known
elessair 0:f269e3021894 112 return RES_OK;
elessair 0:f269e3021894 113
elessair 0:f269e3021894 114 }
elessair 0:f269e3021894 115 return RES_PARERR;
elessair 0:f269e3021894 116 }
elessair 0:f269e3021894 117 #endif