void DCCPacketQueue::setup(byte length) { size = length; queue = (DCCPacket *)malloc(sizeof(DCCPacket) *size); for(int i = 0; i<size; ++i) { queue[i] = DCCPacket(); } }
void DCCPacketQueue::clear(void) { read_pos = 0; write_pos = 0; written = 0; for(int i = 0; i<size; ++i) { queue[i] = DCCPacket(); } }
bool DCCTemporalQueue::forget(unsigned int address) { bool found = false; for(int i = 0; i < size; ++i) { if(queue[i].getAddress() == address) { queue[i] = DCCPacket(); //revert to default value age[i] = 255; //mark it as really old. } } --written; return found; }
bool DCCPacketQueue::forget(uint16_t address, uint8_t address_kind) { bool found = false; for(int i = 0; i < size; ++i) { if( (queue[i].getAddress() == address) && (queue[i].getAddressKind() == address_kind) ) { found = true; queue[i] = DCCPacket(); //revert to default value } } --written; return found; }