MotorControlModuleSDFM_TMS3.../Projects/EFC_Application/UMLibrary/communication/hiperface/HipPosition.cpp

65 lines
2.4 KiB
C++

/*
* HipPosition.cpp
*
* Created on: 20 ôåâð. 2020 ã.
* Author: user
*/
#include "HipPosition.hh"
//float communication::hiperface::HipPositionClient::get() const {
//
// if( not request) position_request.message_control.ans_ready_flag = false, request = hip_driver.send( &position_request.message_control );
// else {
// if( position_request.message_control.ans_ready_flag ) {
// request = position_request.message_control.ans_ready_flag = false;
//
// reinterpret_cast<unsigned char*>( &position_code )[0] = (position_request.rec_data[2] << 8) | position_request.rec_data[3];
// reinterpret_cast<unsigned char*>( &position_code )[1] = (position_request.rec_data[0] << 8) | position_request.rec_data[1];
//
// return position_code * _1_to_rad;
// }
// }
//
// return NAN;
//
//}
communication::hiperface::HipPositionClient::HipPositionClient(
driver::HiperfaceNetworkDriver & hip_driver, unsigned short address )
: hip_driver(hip_driver) {
position_request.message_control.address = address;
set_position_request.message_control.address = address;
}
void communication::hiperface::HipPositionClient::set( unsigned long position ) {
set_position_request.send_data[0] = reinterpret_cast<unsigned char*>( &position )[1] >> 8;
set_position_request.send_data[1] = reinterpret_cast<unsigned char*>( &position )[1];
set_position_request.send_data[2] = reinterpret_cast<unsigned char*>( &position )[0] >> 8;
set_position_request.send_data[3] = reinterpret_cast<unsigned char*>( &position )[0];
if( not set_request) set_position_request.message_control.ans_ready_flag = false, set_request = hip_driver.send( &set_position_request.message_control );
else {
if( set_position_request.message_control.ans_ready_flag ) {
set_request = position_request.message_control.ans_ready_flag = false;
//íîâàÿ ïîçèöèÿ óñòàíîâëåíà óñïåøíî!
} else /*ïðîèçîøëà îøèáêà*/;
}
}
unsigned long communication::hiperface::HipPositionClient::getPositionCode() const {
unsigned long position_code;
reinterpret_cast<unsigned char*>( &position_code )[0] = (position_request.rec_data[2] << 8) | position_request.rec_data[3];
reinterpret_cast<unsigned char*>( &position_code )[1] = (position_request.rec_data[0] << 8) | position_request.rec_data[1];
return position_code;
}