/*********************************************************************** * LOCAL FUNCTION DEFINITIONS * ************************************************************************/ static int export_encoder_pair(const char *name, const int inst_id, encoder_pair_t *e) { #define FCHECK(rvalue) if (float_pin_null(rvalue)) return _halerrno; #define BCHECK(rvalue) if (bit_pin_null(rvalue)) return _halerrno; #define UCHECK(rvalue) if (u32_pin_null(rvalue)) return _halerrno; BCHECK(e->smpl.master_A = halxd_pin_bit_newf(HAL_IN, inst_id, 0, "%s.master-A", name)); BCHECK(e->smpl.master_B = halxd_pin_bit_newf(HAL_IN, inst_id, 0, "%s.master-B", name)); BCHECK(e->smpl.slave_A = halxd_pin_bit_newf(HAL_IN, inst_id, 0, "%s.slave-A", name)); BCHECK(e->smpl.slave_B = halxd_pin_bit_newf(HAL_IN, inst_id, 0, "%s.slave-B", name)); BCHECK(e->smpl.enable = halxd_pin_bit_newf(HAL_IN, inst_id, 0, "%s.enable", name)); FCHECK(e->upd.error = halxd_pin_float_newf(HAL_OUT, inst_id, 0.0, "%s.error", name)); UCHECK(e->upd.master_ppr = halxd_pin_u32_newf(HAL_IO, inst_id, 0.0, "%s.master-ppr", name)); UCHECK(e->upd.slave_ppr = halxd_pin_u32_newf(HAL_IO, inst_id, 0.0, "%s.slave-ppr", name)); UCHECK(e->upd.master_teeth = halxd_pin_u32_newf(HAL_IO, inst_id, 0.0, "%s.master-teeth", name)); UCHECK(e->upd.slave_teeth = halxd_pin_u32_newf(HAL_IO, inst_id, 0.0, "%s.slave-teeth", name)); // sample_state e->smpl.master_state = 0; e->smpl.slave_state = 0; // shared_state e->sample_reads.incr.i.master_increment = 0; e->sample_reads.incr.i.slave_increment = 0; e->update_reads.raw_error = 0; // update_state e->upd.output_scale = 1.0; return 0; }
int main () { int i; test_addS64_tS32_t4 (S64_ta, S32_tb, S32_tc); SCHECK (64, 4, add); test_addS32_tS16_t8 (S32_ta, S16_tb, S16_tc); SCHECK (32, 8, add); test_addS16_tS8_t16 (S16_ta, S8_tb, S8_tc); SCHECK (16, 16, add); test_subS64_tS32_t4 (S64_ta, S32_tb, S32_tc); SCHECK (64, 4, sub); test_subS32_tS16_t8 (S32_ta, S16_tb, S16_tc); SCHECK (32, 8, sub); test_subS16_tS8_t16 (S16_ta, S8_tb, S8_tc); SCHECK (16, 16, sub); test_addU64_tU32_t4 (S64_ta, S32_tb, S32_tc); UCHECK (64, 4, add); test_addU32_tU16_t8 (S32_ta, S16_tb, S16_tc); UCHECK (32, 8, add); test_addU16_tU8_t16 (S16_ta, S8_tb, S8_tc); UCHECK (16, 16, add); test_subU64_tU32_t4 (S64_ta, S32_tb, S32_tc); UCHECK (64, 4, sub); test_subU32_tU16_t8 (S32_ta, S16_tb, S16_tc); UCHECK (32, 8, sub); test_subU16_tU8_t16 (S16_ta, S8_tb, S8_tc); UCHECK (16, 16, sub); test_addS16_tS8_t16_neg0 (S16_ta, S8_tb, S8_tc); NCHECK (add_rS16); test_subS16_tS8_t16_neg0 (S16_ta, S8_tb, S8_tc); NCHECK (sub_rS16); test_addS16_tS8_t16_neg1 (S16_ta, S8_tb, S8_tc); NCHECK (add_rS16); test_subS16_tS8_t16_neg1 (S16_ta, S8_tb, S8_tc); NCHECK (sub_rS16); test_addS16_tS8_t16_neg2 (S16_ta, S8_tb, S8_tc); NCHECK (add_rS16); test_subS16_tS8_t16_neg2 (S16_ta, S8_tb, S8_tc); NCHECK (sub_rS16); test_subS16_tS8_t16_neg3 (S16_ta, S8_tb, S8_tc); NCHECK (neg_r); return 0; }
int main () { int i; test_addl_S64_S32_4 (S64_ta, S32_tb, S32_tc); SCHECK (64, 4, addl); test_addl_S32_S16_8 (S32_ta, S16_tb, S16_tc); SCHECK (32, 8, addl); test_addl_S16_S8_16 (S16_ta, S8_tb, S8_tc); SCHECK (16, 16, addl); test_subl_S64_S32_4 (S64_ta, S32_tb, S32_tc); SCHECK (64, 4, subl); test_subl_S32_S16_8 (S32_ta, S16_tb, S16_tc); SCHECK (32, 8, subl); test_subl_S16_S8_16 (S16_ta, S8_tb, S8_tc); SCHECK (16, 16, subl); test_addl_U64_U32_4 (S64_ta, S32_tb, S32_tc); UCHECK (64, 4, addl); test_addl_U32_U16_8 (S32_ta, S16_tb, S16_tc); UCHECK (32, 8, addl); test_addl_U16_U8_16 (S16_ta, S8_tb, S8_tc); UCHECK (16, 16, addl); test_subl_U64_U32_4 (S64_ta, S32_tb, S32_tc); UCHECK (64, 4, subl); test_subl_U32_U16_8 (S32_ta, S16_tb, S16_tc); UCHECK (32, 8, subl); test_subl_U16_U8_16 (S16_ta, S8_tb, S8_tc); UCHECK (16, 16, subl); test_addl_S64_S32_4_neg0 (S64_ta, S32_tb, S32_tc); NCHECK (neg_r); test_addl_S64_S32_4_neg1 (S64_ta, S32_tb, S32_tc); NCHECK (subl_rS64); test_subl_S64_S32_4_neg0 (S64_ta, S32_tb, S32_tc); NCHECK (addl_rS64); test_subl_S64_S32_4_neg1 (S64_ta, S32_tb, S32_tc); NCHECK (neg_r); test_subl_S64_S32_4_neg2 (S64_ta, S32_tb, S32_tc); NCHECK (neg_r); return 0; }