#include "encoder_implement.h" #include "board.h" #include "print.h" EncoderImp::EncoderImp(unsigned char _num, bool _reverse) : reverse(_reverse), num(_num) { clear(); } void EncoderImp::init() { Board::get()->encoder_init(num); clear(); } void EncoderImp::clear() { total_count = 0; pid_pos = odom_pos = 0; } long EncoderImp::get_total_count() { if (reverse) total_count += Board::get()->GetEncoderCount(num); else total_count -= Board::get()->GetEncoderCount(num); return total_count; } long EncoderImp::get_increment_count_for_dopid() { if (reverse) total_count += Board::get()->GetEncoderCount(num); else total_count -= Board::get()->GetEncoderCount(num); long l = total_count-pid_pos; pid_pos = total_count; return l; } long EncoderImp::get_increment_count_for_odom() { if (reverse) total_count += Board::get()->GetEncoderCount(num); else total_count -= Board::get()->GetEncoderCount(num); long l = total_count-odom_pos; odom_pos = total_count; return l; }