X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Fchips%2Fstm25p%2FStm25pLogP.nc;h=e454de79d88c27d03d5b8dafb4aca2e937632343;hb=e9bfab607e051bae6afb47b44892ce37541d1b44;hp=208c436571609109c2b98630a831ae2f00a3c9ed;hpb=98313f86cf5f1b380e54c280e9ce9572b1010b55;p=tinyos-2.x.git diff --git a/tos/chips/stm25p/Stm25pLogP.nc b/tos/chips/stm25p/Stm25pLogP.nc index 208c4365..e454de79 100644 --- a/tos/chips/stm25p/Stm25pLogP.nc +++ b/tos/chips/stm25p/Stm25pLogP.nc @@ -161,7 +161,7 @@ implementation { // don't allow appends larger than maximum record size if ( len > MAX_RECORD_SIZE ) - return ESIZE; + return EINVAL; // move to next block if current block doesn't have enough space if ( sizeof( m_header ) + len > bytes_left ) @@ -201,7 +201,7 @@ 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; + return (uint8_t)(( addr >> STM25P_SECTOR_SIZE_LOG2 ) % sector); } stm25p_addr_t calcAddr( uint8_t client, stm25p_addr_t addr ) { @@ -243,9 +243,11 @@ implementation { m_log_info[ id ].read_addr = m_log_state[ id ].cookie & ~BLOCK_MASK; m_log_info[ id ].remaining = 0; m_rw_state = S_SEARCH_SEEK; - if ( m_log_info[ id ].read_addr != m_log_state[ id ].cookie ) + if ( m_log_info[ id ].read_addr != m_log_state[ id ].cookie ) { + m_log_info[ id ].read_addr += sizeof( m_addr ); call Sector.read[ id ]( calcAddr( id, m_log_info[ id ].read_addr ), &m_header, sizeof( m_header ) ); + } else signalDone( id, SUCCESS ); } @@ -340,7 +342,7 @@ implementation { else { log_info->write_addr += sizeof( m_addr ); m_rw_state = S_SEARCH_RECORDS; - call Sector.read[ id ]( log_info->write_addr, &m_header, + call Sector.read[ id ]( calcAddr(id, log_info->write_addr), &m_header, sizeof( m_header ) ); } } @@ -371,7 +373,7 @@ implementation { log_info->read_addr += sizeof( m_header ) + m_header; // if not yet at cookie, keep searching if ( log_info->read_addr < m_log_state[ id ].cookie ) { - call Sector.read[ id ]( log_info->read_addr, &m_header, + call Sector.read[ id ]( calcAddr(id, log_info->read_addr), &m_header, sizeof( m_header ) ); } // at or passed cookie, stop