int Danger_for_Shunting_information_Encoder(Bitstream* stream, const Danger_for_Shunting_information* p) { if (NormalBitstream(stream, DANGER_FOR_SHUNTING_INFORMATION_BITSIZE)) { if (Danger_for_Shunting_information_UpperBitsNotSet(p)) { uint8_t* addr = stream->addr; const uint32_t size = stream->size; const uint32_t pos = stream->bitpos; Bitwalker_Poke_Normal(addr, size, pos, 2, p->Q_DIR); Bitwalker_Poke_Normal(addr, size, pos + 2, 13, p->L_PACKET); Bitwalker_Poke_Normal(addr, size, pos + 15, 1, p->Q_ASPECT); stream->bitpos += DANGER_FOR_SHUNTING_INFORMATION_BITSIZE; //@ assert Q_DIR: EqualBits(stream, pos, pos + 2, p->Q_DIR); //@ assert L_PACKET: EqualBits(stream, pos + 2, pos + 15, p->L_PACKET); //@ assert Q_ASPECT: EqualBits(stream, pos + 15, pos + 16, p->Q_ASPECT); return 1; } else { return -2; } } else { return -1; } }
int Stop_if_in_Staff_Responsible_Encoder(Bitstream* stream, const Stop_if_in_Staff_Responsible* p) { if (NormalBitstream(stream, STOP_IF_IN_STAFF_RESPONSIBLE_BITSIZE)) { if (Stop_if_in_Staff_Responsible_UpperBitsNotSet(p)) { uint8_t* addr = stream->addr; const uint32_t size = stream->size; const uint32_t pos = stream->bitpos; Bitwalker_Poke_Normal(addr, size, pos, 2, p->Q_DIR); Bitwalker_Poke_Normal(addr, size, pos + 2, 13, p->L_PACKET); Bitwalker_Poke_Normal(addr, size, pos + 15, 1, p->Q_SRSTOP); stream->bitpos += STOP_IF_IN_STAFF_RESPONSIBLE_BITSIZE; //@ assert Q_DIR: EqualBits(stream, pos, pos + 2, p->Q_DIR); //@ assert L_PACKET: EqualBits(stream, pos + 2, pos + 15, p->L_PACKET); //@ assert Q_SRSTOP: EqualBits(stream, pos + 15, pos + 16, p->Q_SRSTOP); return 1; } else { return -2; } } else { return -1; } }
int Error_Reporting_Encoder(Bitstream* stream, const Error_Reporting* p) { if (NormalBitstream(stream, ERROR_REPORTING_BITSIZE)) { if (Error_Reporting_UpperBitsNotSet(p)) { uint8_t* addr = stream->addr; const uint32_t size = stream->size; const uint32_t pos = stream->bitpos; Bitwalker_Poke_Normal(addr, size, pos, 13, p->L_PACKET); Bitwalker_Poke_Normal(addr, size, pos + 13, 8, p->M_ERROR); stream->bitpos += ERROR_REPORTING_BITSIZE; //@ assert L_PACKET: EqualBits(stream, pos, pos + 13, p->L_PACKET); //@ assert M_ERROR: EqualBits(stream, pos + 13, pos + 21, p->M_ERROR); return 1; } else { return -2; } } else { return -1; } }
int Default_balise_or_Loop_or_RIU_information_Encoder(Bitstream* stream, const Default_balise_or_Loop_or_RIU_information* p) { if (NormalBitstream(stream, DEFAULT_BALISE_OR_LOOP_OR_RIU_INFORMATION_BITSIZE)) { if (Default_balise_or_Loop_or_RIU_information_UpperBitsNotSet(p)) { uint8_t* addr = stream->addr; const uint32_t size = stream->size; const uint32_t pos = stream->bitpos; Bitwalker_Poke_Normal(addr, size, pos, 8, p->NID_PACKET); Bitwalker_Poke_Normal(addr, size, pos + 8, 2, p->Q_DIR); Bitwalker_Poke_Normal(addr, size, pos + 10, 13, p->L_PACKET); stream->bitpos += DEFAULT_BALISE_OR_LOOP_OR_RIU_INFORMATION_BITSIZE; //@ assert NID_PACKET: EqualBits(stream, pos, pos + 8, p->NID_PACKET); //@ assert Q_DIR: EqualBits(stream, pos + 8, pos + 10, p->Q_DIR); //@ assert L_PACKET: EqualBits(stream, pos + 10, pos + 23, p->L_PACKET); return 1; } else { return -2; } } else { return -1; } }
int Train_running_number_from_RBC_Encoder(Bitstream* stream, const Train_running_number_from_RBC* p) { if (NormalBitstream(stream, TRAIN_RUNNING_NUMBER_FROM_RBC_BITSIZE)) { if (Train_running_number_from_RBC_UpperBitsNotSet(p)) { uint8_t* addr = stream->addr; const uint32_t size = stream->size; const uint32_t pos = stream->bitpos; Bitwalker_Poke_Normal(addr, size, pos, 8, p->NID_PACKET); Bitwalker_Poke_Normal(addr, size, pos + 8, 2, p->Q_DIR); Bitwalker_Poke_Normal(addr, size, pos + 10, 13, p->L_PACKET); Bitwalker_Poke_Normal(addr, size, pos + 23, 32, p->NID_OPERATIONAL); stream->bitpos += TRAIN_RUNNING_NUMBER_FROM_RBC_BITSIZE; //@ assert NID_PACKET: EqualBits(stream, pos, pos + 8, p->NID_PACKET); //@ assert Q_DIR: EqualBits(stream, pos + 8, pos + 10, p->Q_DIR); //@ assert L_PACKET: EqualBits(stream, pos + 10, pos + 23, p->L_PACKET); //@ assert NID_OPERATIONAL: EqualBits(stream, pos + 23, pos + 55, p->NID_OPERATIONAL); return 1; } else { return -2; } } else { return -1; } }
int Track_Condition_Change_of_allowed_current_consumption_Encoder(Bitstream* stream, const Track_Condition_Change_of_allowed_current_consumption* p) { if (NormalBitstream(stream, TRACK_CONDITION_CHANGE_OF_ALLOWED_CURRENT_CONSUMPTION_BITSIZE)) { if (Track_Condition_Change_of_allowed_current_consumption_UpperBitsNotSet(p)) { uint8_t* addr = stream->addr; const uint32_t size = stream->size; const uint32_t pos = stream->bitpos; Bitwalker_Poke_Normal(addr, size, pos, 2, p->Q_DIR); Bitwalker_Poke_Normal(addr, size, pos + 2, 13, p->L_PACKET); Bitwalker_Poke_Normal(addr, size, pos + 15, 2, p->Q_SCALE); Bitwalker_Poke_Normal(addr, size, pos + 17, 15, p->D_CURRENT); Bitwalker_Poke_Normal(addr, size, pos + 32, 10, p->M_CURRENT); stream->bitpos += TRACK_CONDITION_CHANGE_OF_ALLOWED_CURRENT_CONSUMPTION_BITSIZE; //@ assert Q_DIR: EqualBits(stream, pos, pos + 2, p->Q_DIR); //@ assert L_PACKET: EqualBits(stream, pos + 2, pos + 15, p->L_PACKET); //@ assert Q_SCALE: EqualBits(stream, pos + 15, pos + 17, p->Q_SCALE); //@ assert D_CURRENT: EqualBits(stream, pos + 17, pos + 32, p->D_CURRENT); //@ assert M_CURRENT: EqualBits(stream, pos + 32, pos + 42, p->M_CURRENT); return 1; } else { return -2; } } else { return -1; } }
int Adhesion_Factor_Encoder(Bitstream* stream, const Adhesion_Factor* p) { if (NormalBitstream(stream, ADHESION_FACTOR_BITSIZE)) { if (Adhesion_Factor_UpperBitsNotSet(p)) { uint8_t* addr = stream->addr; const uint32_t size = stream->size; const uint32_t pos = stream->bitpos; Bitwalker_Poke_Normal(addr, size, pos, 2, p->Q_DIR); Bitwalker_Poke_Normal(addr, size, pos + 2, 13, p->L_PACKET); Bitwalker_Poke_Normal(addr, size, pos + 15, 2, p->Q_SCALE); Bitwalker_Poke_Normal(addr, size, pos + 17, 15, p->D_ADHESION); Bitwalker_Poke_Normal(addr, size, pos + 32, 15, p->L_ADHESION); Bitwalker_Poke_Normal(addr, size, pos + 47, 1, p->M_ADHESION); stream->bitpos += ADHESION_FACTOR_BITSIZE; //@ assert Q_DIR: EqualBits(stream, pos, pos + 2, p->Q_DIR); //@ assert L_PACKET: EqualBits(stream, pos + 2, pos + 15, p->L_PACKET); //@ assert Q_SCALE: EqualBits(stream, pos + 15, pos + 17, p->Q_SCALE); //@ assert D_ADHESION: EqualBits(stream, pos + 17, pos + 32, p->D_ADHESION); //@ assert L_ADHESION: EqualBits(stream, pos + 32, pos + 47, p->L_ADHESION); //@ assert M_ADHESION: EqualBits(stream, pos + 47, pos + 48, p->M_ADHESION); return 1; } else { return -2; } } else { return -1; } }
int Reversing_area_information_Encoder(Bitstream* stream, const Reversing_area_information* p) { if (NormalBitstream(stream, REVERSING_AREA_INFORMATION_BITSIZE)) { if (Reversing_area_information_UpperBitsNotSet(p)) { uint8_t* addr = stream->addr; const uint32_t size = stream->size; const uint32_t pos = stream->bitpos; Bitwalker_Poke_Normal(addr, size, pos, 8, p->NID_PACKET); Bitwalker_Poke_Normal(addr, size, pos + 8, 2, p->Q_DIR); Bitwalker_Poke_Normal(addr, size, pos + 10, 13, p->L_PACKET); Bitwalker_Poke_Normal(addr, size, pos + 23, 2, p->Q_SCALE); Bitwalker_Poke_Normal(addr, size, pos + 25, 15, p->D_STARTREVERSE); Bitwalker_Poke_Normal(addr, size, pos + 40, 15, p->L_REVERSEAREA); stream->bitpos += REVERSING_AREA_INFORMATION_BITSIZE; //@ assert NID_PACKET: EqualBits(stream, pos, pos + 8, p->NID_PACKET); //@ assert Q_DIR: EqualBits(stream, pos + 8, pos + 10, p->Q_DIR); //@ assert L_PACKET: EqualBits(stream, pos + 10, pos + 23, p->L_PACKET); //@ assert Q_SCALE: EqualBits(stream, pos + 23, pos + 25, p->Q_SCALE); //@ assert D_STARTREVERSE: EqualBits(stream, pos + 25, pos + 40, p->D_STARTREVERSE); //@ assert L_REVERSEAREA: EqualBits(stream, pos + 40, pos + 55, p->L_REVERSEAREA); return 1; } else { return -2; } } else { return -1; } }