Example #1
0
/***********************************************************************
*                   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;
}
Example #2
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;
}
Example #3
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;
}