BayEOS-Arduino  1.8.0_0.0.4
BayEOSBufferRAM.cpp
1 #include "BayEOSBufferRAM.h"
2 
4 
5 BayEOSBufferRAM::BayEOSBufferRAM(uint16_t max_length,uint16_t min_free):BayEOSBuffer(){
6  while((_buffer=(uint8_t *)malloc(max_length))==NULL){
7  max_length-=10;
8  }
9  free(_buffer);
10  max_length-=min_free;
11  _buffer=(uint8_t *)malloc(max_length);
12  _ram_pos=_buffer;
13  _max_length=max_length;
14  reset();
15 }
16 
17 BayEOSBufferRAM::BayEOSBufferRAM(uint8_t* buffer,unsigned long max_length):BayEOSBuffer(){
18  _buffer=buffer;
19  _ram_pos=_buffer;
20  _max_length=max_length;
21  reset();
22 }
23 
24 
25 uint8_t BayEOSBufferRAM::write(const uint8_t b){
26  if((_ram_pos-_buffer)<_max_length){
27  *_ram_pos=b;
28  _ram_pos++;
29  return 1;
30  } else return 0;
31 }
32 
33 uint8_t BayEOSBufferRAM::write(const uint8_t *b,uint8_t length){
34  if((_ram_pos-_buffer)+length<=_max_length){
35  memcpy(_ram_pos,b,length);
36  _ram_pos+=length;
37  return length;
38  } return 0;
39 }
40 
41 uint8_t BayEOSBufferRAM::seek(unsigned long pos){
42  if(pos<_max_length){
43  _ram_pos=_buffer+pos;
44  return true;
45  } else return false;
46 }
47 
48 int BayEOSBufferRAM::read(void){
49  return *_ram_pos++;
50 }
51 
52 int BayEOSBufferRAM::read(uint8_t *dest,int length){
53  memcpy(dest,_ram_pos,length);
54  _ram_pos+=length;
55  return length;
56 }
57 
58 void BayEOSBufferRAM::flush(void){
59 }
60 
61 void BayEOSBufferRAM::resetStorage(void){
62 }
63 
64 
void reset(void)