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-07-10
Revision:
4:1323ef48a984
Parent:
2:9d7a03c79cd3
Child:
6:a0cc9c27cedf

File content as of revision 4:1323ef48a984:

#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:
    enum servo_id {
        SERVO_0,
        SERVO_1,
        SERVO_2,
        SERVO_NUM
    };
    
    enum encoder_id {
        ENCODER_0,
        ENCODER_1,
        ENCODER_2,
        ENCODER_NUM
    };
    
    enum analog_input_id {
        ANALOG_IN_0,
        ANALOG_IN_1,
        ANALOG_IN_2,
        ANALOG_INPUT_NUM
    };

    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 PinName _servo_pins[SERVO_NUM];
    
    static TIM_TypeDef* _encoder_timers[ENCODER_NUM];
    static const size_t _encoder_pulse_per_revol;
    
    static const PinName _analog_input_pins[ANALOG_INPUT_NUM];
    
    servo* _servos[SERVO_NUM];
    rotary_encoder_ab_phase* _encoders[ENCODER_NUM];
    AnalogIn* _analog_inputs[ANALOG_INPUT_NUM];
    
    serial_connected_mcu_slave _slave;
};

} /* namespace serial_connected_mcu */

#endif