From 98313f86cf5f1b380e54c280e9ce9572b1010b55 Mon Sep 17 00:00:00 2001 From: jwhui Date: Thu, 7 Jun 2007 16:14:22 +0000 Subject: [PATCH] - Check in fixes made by Guillermo De Cesco. --- tos/chips/stm25p/Stm25pLogP.nc | 40 +++++++++++++++++----------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/tos/chips/stm25p/Stm25pLogP.nc b/tos/chips/stm25p/Stm25pLogP.nc index d00dee06..208c4365 100644 --- a/tos/chips/stm25p/Stm25pLogP.nc +++ b/tos/chips/stm25p/Stm25pLogP.nc @@ -199,6 +199,18 @@ implementation { } + uint8_t calcSector( uint8_t client, stm25p_addr_t addr ) { + uint8_t sector = call Sector.getNumSectors[ client ](); + return (uint8_t)( addr >> STM25P_SECTOR_SIZE_LOG2 ) % sector; + } + + stm25p_addr_t calcAddr( uint8_t client, stm25p_addr_t addr ) { + stm25p_addr_t result = calcSector( client, addr ); + result <<= STM25P_SECTOR_SIZE_LOG2; + result |= addr & STM25P_SECTOR_MASK; + return result; + } + event void ClientResource.granted[ uint8_t id ]() { // log never used, need to find start and end of log @@ -228,12 +240,12 @@ implementation { (storage_cookie_t)(writeSector-numSectors) <> STM25P_SECTOR_SIZE_LOG2 ) % sector; - } - - stm25p_addr_t calcAddr( uint8_t client, stm25p_addr_t addr ) { - stm25p_addr_t result = calcSector( client, addr ); - result <<= STM25P_SECTOR_SIZE_LOG2; - result |= addr & STM25P_SECTOR_MASK; - return result; - } - void continueReadOp( uint8_t client ) { stm25p_addr_t read_addr = m_log_info[ client ].read_addr; @@ -317,7 +317,7 @@ implementation { switch( m_rw_state ) { case S_SEARCH_BLOCKS: { - uint8_t block = addr >> BLOCK_SIZE_LOG2; + uint16_t block = addr >> BLOCK_SIZE_LOG2; // record potential starting and ending addresses if ( m_addr != STM25P_INVALID_ADDRESS ) { if ( m_addr < log_info->read_addr ) @@ -355,8 +355,8 @@ implementation { // if header is valid and is on same block, move to next record if ( m_header != INVALID_HEADER && cur_block == new_block ) { log_info->write_addr += sizeof( m_header ) + m_header; - call Sector.read[ id ]( log_info->write_addr, &m_header, - sizeof( m_header ) ); + call Sector.read[ id ]( calcAddr( id, log_info->write_addr ), + &m_header, sizeof( m_header ) ); } // found last record else { @@ -370,7 +370,7 @@ implementation { // searching for last log record to read log_info->read_addr += sizeof( m_header ) + m_header; // if not yet at cookie, keep searching - if ( log_info->read_addr < m_log_state->cookie ) { + if ( log_info->read_addr < m_log_state[ id ].cookie ) { call Sector.read[ id ]( log_info->read_addr, &m_header, sizeof( m_header ) ); } @@ -454,7 +454,7 @@ implementation { // (the log could have cycled around) stm25p_addr_t volume_size = STM25P_SECTOR_SIZE * ( call Sector.getNumSectors[ id ]() - 1 ); - if ( m_log_info[ id ].write_addr >= volume_size ) { + if ( m_log_info[ id ].write_addr > volume_size ) { stm25p_addr_t read_addr = m_log_info[ id ].write_addr - volume_size; if ( m_log_info[ id ].read_addr < read_addr ) m_log_info[ id ].read_addr = read_addr; -- 2.39.2