自己改了一个多个字节用着,现在测试,没有发现bug,等暴雷
rt_size_t rt_ringbuffer_peak_more(structrt_ringbuffer*rb,
rt_uint8_t *ptr,
rt_uint16_t length){
rt_size_t size;RT_ASSERT(rb != RT_NULL);/* whether has enough data */
size =rt_ringbuffer_data_len(rb);/* no data */if(size ==0)return0;/* less data */if(size < length)
length = size;if(rb->buffer_size - rb->read_index > length){/* copy all of data */rt_memcpy(ptr,&rb->buffer_ptr[rb->read_index], length);/* this should not cause overflow because there is enough space for
* length of data in current mirror */// rb->read_index += length;return length;}rt_memcpy(&ptr[0],&rb->buffer_ptr[rb->read_index],
rb->buffer_size - rb->read_index);rt_memcpy(&ptr[rb->buffer_size - rb->read_index],&rb->buffer_ptr[0],
length -(rb->buffer_size - rb->read_index));/* we are going into the other side of the mirror */// rb->read_mirror = ~rb->read_mirror;// rb->read_index = length - (rb->buffer_size - rb->read_index);return length;}RTM_EXPORT(rt_ringbuffer_peak_more);
0>[Itest_Datatemp peak =700>00> test_Datatemp get =700>00> test_Data put =800>00> test_Datatemp peak =800>00> test_Datatemp get =800>00> test_Data put =900>00> test_Datatemp peak =900>00> test_Datatemp get =900>00> test_Data put =1000>00> test_Datatemp peak =1000>00> test_Datatemp get =1000>00> test_Data put =1100>00> test_Datatemp peak =1100>00> test_Datatemp get =1100>00> test_Data put =1200>00> test_Datatemp peak =1200>00> test_Datatemp get =1200>00> test_Data put =1300>