104 lines
2.8 KiB
C++
104 lines
2.8 KiB
C++
|
|
/*
|
|||
|
|
* PackagerADT7310.h
|
|||
|
|
*
|
|||
|
|
* Created on: 27 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 2019 <EFBFBD>.
|
|||
|
|
* Author: user
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef SOURCE_DRIVER_CHIPSET_PACKAGERADT7310_H_
|
|||
|
|
#define SOURCE_DRIVER_CHIPSET_PACKAGERADT7310_H_
|
|||
|
|
|
|||
|
|
#include <cstddef>
|
|||
|
|
#include <stdint.h>
|
|||
|
|
|
|||
|
|
namespace driver { namespace chipset {
|
|||
|
|
|
|||
|
|
struct PackagerADT7310 {
|
|||
|
|
|
|||
|
|
struct ConfigPackager {
|
|||
|
|
typedef uint16_t Data; //!<<3C><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
typedef uint16_t Frame; //!<<3C><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
|
|||
|
|
static const std::size_t FrameSize; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
|
|||
|
|
uint16_t reg_address;
|
|||
|
|
bool write_nread;
|
|||
|
|
|
|||
|
|
static const uint16_t read_mock = 0xFFFFu;
|
|||
|
|
|
|||
|
|
Frame pack( Data = 0xFFFFu ) const;
|
|||
|
|
Data unpack( Frame ) const;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct TemperaturePackager {
|
|||
|
|
typedef int16_t Data;
|
|||
|
|
typedef uint32_t Frame;
|
|||
|
|
|
|||
|
|
static const std::size_t FrameSize; //!<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
|
|||
|
|
static const uint16_t reg_address = 0x02;
|
|||
|
|
static const bool write_nread = false;
|
|||
|
|
|
|||
|
|
static const uint16_t read_mock = 0xFFFFu;
|
|||
|
|
|
|||
|
|
Frame pack( Data = 0xFFFFu ) const;
|
|||
|
|
Data unpack( Frame ) const;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
//!<21><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
union CommandByteForm {
|
|||
|
|
|
|||
|
|
struct CommandByte {
|
|||
|
|
uint16_t data : 8;
|
|||
|
|
uint16_t C1C0 : 2;
|
|||
|
|
uint16_t CONT_MODE : 1;
|
|||
|
|
uint16_t REGISTER_ADDRESS : 3;
|
|||
|
|
uint16_t RW_FLAG : 1;
|
|||
|
|
uint16_t ZERO : 1;
|
|||
|
|
|
|||
|
|
static CommandByte make( uint16_t reg_addr, bool read_nwrite, uint16_t data ) {
|
|||
|
|
|
|||
|
|
const CommandByte cmd_byte = {
|
|||
|
|
.data = data,
|
|||
|
|
.C1C0 = 0,
|
|||
|
|
.CONT_MODE = 0,
|
|||
|
|
.REGISTER_ADDRESS = reg_addr,
|
|||
|
|
.RW_FLAG = read_nwrite,
|
|||
|
|
.ZERO = 0
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
return cmd_byte;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
} command_byte;
|
|||
|
|
|
|||
|
|
typedef uint16_t Frame;
|
|||
|
|
|
|||
|
|
Frame frame; // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
|
|||
|
|
CommandByteForm() = default;
|
|||
|
|
|
|||
|
|
CommandByteForm & operator=( const CommandByteForm & ) = default;
|
|||
|
|
|
|||
|
|
CommandByteForm( const CommandByteForm & ) = default;
|
|||
|
|
|
|||
|
|
CommandByteForm( const Frame & frame ) : frame(frame) {}
|
|||
|
|
|
|||
|
|
CommandByteForm( uint16_t reg_addr, bool read_nwrite, char msb_data_byte )
|
|||
|
|
: command_byte( CommandByteForm::CommandByte::make(reg_addr, read_nwrite, msb_data_byte) ) {}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
static uint32_t expand( CommandByteForm command_byte, char lsb_data_byte );
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
} /* namespace chipset */
|
|||
|
|
} /* namespace driver */
|
|||
|
|
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
#endif /* SOURCE_DRIVER_CHIPSET_PACKAGERADT7310_H_ */
|