Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
GroupBulkRead.h 1.42 KiB
/*
 * GroupBulkRead.h
 *
 *  Created on: 2016. 1. 28.
 *      Author: zerom
 */

#ifndef DYNAMIXEL_SDK_INCLUDE_DYNAMIXEL_SDK_GROUPBULKREAD_H_
#define DYNAMIXEL_SDK_INCLUDE_DYNAMIXEL_SDK_GROUPBULKREAD_H_


#include <map>
#include <vector>
#include "RobotisDef.h"
#include "PortHandler.h"
#include "PacketHandler.h"

namespace ROBOTIS
{

class GroupBulkRead
{
private:
    PortHandler     *port_;
    PacketHandler   *ph_;

    std::vector<UINT8_T>            id_list_;
    std::map<UINT8_T, UINT16_T>     address_list_;  // <id, start_address>
    std::map<UINT8_T, UINT16_T>     length_list_;   // <id, data_length>
    std::map<UINT8_T, UINT8_T *>    data_list_;     // <id, data>

    UINT8_T         *param_;

    void    MakeParam();

public:
    GroupBulkRead(PortHandler *port, PacketHandler *ph);
    ~GroupBulkRead() { ClearParam(); }

    PortHandler     *GetPortHandler()   { return port_; }
    PacketHandler   *GetPacketHandler() { return ph_; }

    bool    AddParam    (UINT8_T id, UINT16_T start_address, UINT16_T data_length);
    void    RemoveParam (UINT8_T id);
    void    ClearParam  ();

    int     TxPacket();
    int     RxPacket();
    int     TxRxPacket();

    bool    GetData(UINT8_T id, UINT16_T address, UINT8_T *data);
    bool    GetData(UINT8_T id, UINT16_T address, UINT16_T *data);
    bool    GetData(UINT8_T id, UINT16_T address, UINT32_T *data);
};

}


#endif /* DYNAMIXEL_SDK_INCLUDE_DYNAMIXEL_SDK_GROUPBULKREAD_H_ */