00001 #include "tibi_dabo_battery_monitor_driver_node.h" 00002 //#include <curses.h> 00003 #include <stdlib.h> 00004 TibiDaboBatteryMonitorDriverNode::TibiDaboBatteryMonitorDriverNode(ros::NodeHandle &nh) : 00005 iri_base_driver::IriBaseNodeDriver<TibiDaboBatteryMonitorDriver>(nh) 00006 { 00007 //init class attributes if necessary 00008 this->loop_rate_ = 1;//in [Hz] 00009 00010 // [init publishers] 00011 this->battery_status_publisher_ = this->public_node_handle_.advertise<tibi_dabo_msgs::battery_status>("battery_status", 100); 00012 00013 // [init subscribers] 00014 00015 // [init services] 00016 00017 // [init clients] 00018 00019 // [init action servers] 00020 00021 // [init action clients] 00022 //initscr(); 00023 } 00024 00025 void TibiDaboBatteryMonitorDriverNode::mainNodeThread(void) 00026 { 00027 TBatteryInfo info; 00028 00029 //lock access to driver if necessary 00030 this->driver_.lock(); 00031 00032 this->driver_.get_battery_info(&info); 00033 // [fill msg Header if necessary] 00034 //<publisher_name>.header.stamp = ros::Time::now(); 00035 //<publisher_name>.header.frame_id = "<publisher_topic_name>"; 00036 this->battery_status_msg_.voltage=info.battery_voltage; 00037 this->battery_status_msg_.temperature=(info.temperature1+info.temperature2)/2.0; 00038 this->battery_status_msg_.status=info.status; 00039 this->battery_status_msg_.input_current=info.current_in; 00040 this->battery_status_msg_.output_current=info.current_out; 00041 this->battery_status_msg_.remaining_capacity=info.rem_capacity; 00042 this->battery_status_msg_.time_to_charged=info.time_to_charged; 00043 this->battery_status_msg_.time_to_discharged=info.time_to_discharged; 00044 if(this->driver_.check_alarm()) 00045 { 00046 int ok=system("beep"); //flash();//beep(); 00047 ROS_ERROR("TibiDaboBatteryMonitorDriverNode::mainNodeThread: battery alarm! %d",ok); 00048 } 00049 else if(this->driver_.check_warning()) 00050 { 00051 int ok=system("beep"); //flash();//beep(); 00052 ROS_ERROR("TibiDaboBatteryMonitorDriverNode::mainNodeThread: battery warning! %d",ok); 00053 } 00054 // [fill msg structures] 00055 //this->battery_status_msg_.data = my_var; 00056 00057 // [fill srv structure and make request to the server] 00058 00059 // [fill action structure and make request to the action server] 00060 00061 // [publish messages] 00062 this->battery_status_publisher_.publish(this->battery_status_msg_); 00063 00064 //unlock access to driver if previously blocked 00065 this->driver_.unlock(); 00066 } 00067 00068 /* [subscriber callbacks] */ 00069 00070 /* [service callbacks] */ 00071 00072 /* [action callbacks] */ 00073 00074 /* [action requests] */ 00075 00076 void TibiDaboBatteryMonitorDriverNode::postNodeOpenHook(void) 00077 { 00078 } 00079 00080 void TibiDaboBatteryMonitorDriverNode::addNodeDiagnostics(void) 00081 { 00082 } 00083 00084 void TibiDaboBatteryMonitorDriverNode::addNodeOpenedTests(void) 00085 { 00086 } 00087 00088 void TibiDaboBatteryMonitorDriverNode::addNodeStoppedTests(void) 00089 { 00090 } 00091 00092 void TibiDaboBatteryMonitorDriverNode::addNodeRunningTests(void) 00093 { 00094 } 00095 00096 void TibiDaboBatteryMonitorDriverNode::reconfigureNodeHook(int level) 00097 { 00098 } 00099 00100 TibiDaboBatteryMonitorDriverNode::~TibiDaboBatteryMonitorDriverNode(void) 00101 { 00102 // [free dynamic memory] 00103 //endwin(); 00104 } 00105 00106 /* main function */ 00107 int main(int argc,char *argv[]) 00108 { 00109 return driver_base::main<TibiDaboBatteryMonitorDriverNode>(argc, argv, "tibi_dabo_battery_monitor_driver_node"); 00110 }