nucleo側のプログラム

Dependents:   serial_connected_mcu_nucleo serial_connected_mcu_nucleo

Fork of serial_connected_mcu by tarou yamada

serial_connected_mcu.hpp

Committer:
inst
Date:
2016-08-01
Revision:
15:9a50a5a747ad
Parent:
12:810a484f113f
Child:
16:4e310c3f3a2b

File content as of revision 15:9a50a5a747ad:

#ifndef INCUDED_SERIAL_CONNECTED_MCU_HPP
#define INCUDED_SERIAL_CONNECTED_MCU_HPP

#include "rotary_encoder_ab_phase.hpp"
#include "servo.hpp"
#include "serial_connected_mcu_slave.hpp"
#include "mbed.h"

namespace serial_connected_mcu {

class serial_connected_mcu {
public:
    static serial_connected_mcu* instance();
    void update();

private:
    serial_connected_mcu();
    ~serial_connected_mcu();
    
    // 実体を記述しない
    void operator=(const serial_connected_mcu&);
    serial_connected_mcu(const serial_connected_mcu&);
    
    static serial_connected_mcu* _instance;
    
    static const int16_t _init_write_data[SIZE_OF_WRITE_DATA];
    
    static const PinName _servo_pins[];
    static TIM_TypeDef* _encoder_timers[];
    static const size_t _encoder_pulse_per_revol;
    static const PinName _analog_input_pins[];
    
    static const size_t _servo_num;
    static const size_t _encoder_num;
    static const size_t _analog_input_num;
    
    servo** _servos;
    rotary_encoder_ab_phase** _encoders;
    AnalogIn** _analog_inputs;
    
    #ifdef USE_LIFTER_MODE
    enum {
        UPPER_LIMIT,
        LOWER_LIMIT,
        LIMIT_SWITCHES_NUM
    };
    static const PinName _limit_switch_pins[LIMIT_SWITCHES_NUM];
    DigitalIn* _limit_switches[LIMIT_SWITCHES_NUM];
    #endif
    
    float* _prev_encoders_values;
    Timer _timer;
    
    serial_connected_mcu_slave _slave;
};

} /* namespace serial_connected_mcu */

#endif