Barometer program : Data Logger function includes Barometer & temperature (BMP180), Humidity & temp. (RHT03), Sunshine (Cds), RTC(M41T62) data. : Logging data saves into EEPROM (AT24C1024) using ring buffer function.

Dependencies:   AT24C1024 RHT03 TextLCD BMP180 M41T62

Fork of mbed_blinky by Mbed

Please see https://mbed.org/users/kenjiArai/notebook/mbed-lpc1114fn28-barometer-with-data-logging/#

dt_log.h

Committer:
kenjiArai
Date:
2014-06-29
Revision:
15:065fbeddc305
Child:
16:f164f8912201

File content as of revision 15:065fbeddc305:

/*
 * mbed Application program for the mbed LPC1114FN28
 * Data Logging 
 *
 * Copyright (c) 2013,'14 Kenji Arai / JH1PJL
 *  http://www.page.sannet.ne.jp/kenjia/index.html
 *  http://mbed.org/users/kenjiArai/
 *      Created: June      16th, 2013
 *      Revised: June      29th, 2014
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
 * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
 * DAMAGES OR OTHER  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

//  Definition  -----------------------------------------------------------------------------------
// Buffer size
#define EEP_SIZE    128 * 1024  // 1Mbits = 128 KBytes
#define PKT_SIZE    16          // Packet size
#define BLK_NO      8192        // 128KB/16 = 8192
#define ALL_SIZE    (PKT_SIZE) * (BLK_NO)
#if ALL_SIZ > EEP_SIZE
#error "Data size in EEPROM is too big!"
#endif
#define PTR_SIZE    16

// Buffer control
#define BUF_HEAD    0x0001
#define BUF_RD_ALL  0
#define BLK_SIZE    16

// Buffer Status
#define BUF_FULL    0xff

// Packet pointer
#define READ_POINTER()  \
            ((uint16_t)(( buf_pointer[0] << 8) + buf_pointer[1]))
#define WRITE_POINTER(x)    \
            buf_pointer[0] = (uint8_t)( x >> 8); \
            buf_pointer[1] = (uint8_t)x;
#define RD_STATUS() \
            (buf_pointer[2])
#define WR_STATUS(x)    \
            buf_pointer[2] = (uint8_t)x;

// Pointer structure
typedef struct EEPROM_BUF_INF{
    uint16_t wr_pointer;
    uint16_t max;
    uint16_t ptr;
    uint8_t  size;
    uint8_t  status;    
} xEeprom_ptr;

// RAM definition
extern uint8_t data_pack[PKT_SIZE];

//  Function prototypes ---------------------------------------------------------------------------
void dtlog_data_pack(void);
void dtlog_one_write(void);
void dtlog_rd_buf_inf(xEeprom_ptr *);
void dtlog_clear_all_buff(xEeprom_ptr *);
void dtlog_block_read(xEeprom_ptr *);
void dtlog_num_of_block(xEeprom_ptr *);
uint16_t dtlog_buf_occupation(void);