65 lines
2.4 KiB
C++
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;
|
|
|
|
}
|