Ejemplo n.º 1
0
void ClientSendTask::run(){

#ifdef NETWORK_XBEE
	XBeeConfig config;
	config.baudrate = B57600;
	config.device = _res->getArgv('d');
	config.flag = O_WRONLY;

	_res->getClientList()->authorize(FILE_NAME_CLIENT_LIST);
	_network = new Network();

	if(_network->initialize(config) < 0){
		THROW_EXCEPTION(ExFatal, ERRNO_SYS_02, "can't open the client port.");  // ABORT
	}
#endif

#ifdef NETWORK_UDP
	_network = _res->getNetwork();
#endif

#ifdef NETWORK_XXXXX
	_network = _res->getNetwork();
#endif

	while(true){
	       Event* ev = _res->getClientSendQue()->wait();

		if(ev->getEventType() == EtClientSend){
			MQTTSnMessage msg = MQTTSnMessage();
			ClientNode* clnode = ev->getClientNode();
			msg.absorb( clnode->getClientSendMessage() );

			_network->unicast(clnode->getAddress64Ptr(), clnode->getAddress16(),
					msg.getMessagePtr(), msg.getMessageLength());

		}else if(ev->getEventType() == EtBroadcast){
			MQTTSnMessage msg = MQTTSnMessage();
			msg.absorb( ev->getMqttSnMessage() );
			_network->broadcast(msg.getMessagePtr(), msg.getMessageLength());
		}
		delete ev; 

		/*uint8_t a = 0x88;
		printf("No to unicast");
		_network->unicast(0, (uint16_t)0x1234, &a, 2);*/
	}
}
Ejemplo n.º 2
0
void ClientSendTask::run(){
	NETWORK_CONFIG config;
#ifdef NETWORK_XBEE

	char param[TOMYFRAME_PARAM_MAX];
	bool secure = true;

	if(_res->getParam("BaudRate",param) == 0){

		int val = atoi(param);
		switch(val){
		case 9600:
			config.baudrate = B9600;
			break;
		case 19200:
			config.baudrate =B19200;
			break;
		case 38400:
			config.baudrate =B38400;
			break;
		case 57600:
			config.baudrate =B57600;
			break;
		case 115200:
			config.baudrate = B115200;
			break;
		default:
			THROW_EXCEPTION(ExFatal, ERRNO_APL_01, "Invalid baud rate!");  // ABORT
		}
	}else{
		config.baudrate = B57600;
	}
	config.flag = O_WRONLY;
	if(_res->getParam("SerialDevice", param) == 0){
		config.device = strdup(param);
	}
	if(_res->getParam("SecureConnection",param) == 0){
		if(strcmp(param, "YES")){
			secure = false;  // TCP
		}
	}
	_res->getClientList()->authorize(FILE_NAME_CLIENT_LIST, secure);
	_network = new Network();

	if(_network->initialize(config) < 0){
		THROW_EXCEPTION(ExFatal, ERRNO_APL_01, "can't open the client port.");  // ABORT
	}

#endif

#ifdef NETWORK_UDP
	_network = _res->getNetwork();

#endif

#ifdef NETWORK_XXXXX
	_network = _res->getNetwork();
#endif


	while(true){
		Event* ev = _res->getClientSendQue()->wait();

		if(ev->getEventType() == EtClientSend){
			MQTTSnMessage msg = MQTTSnMessage();
			ClientNode* clnode = ev->getClientNode();
			msg.absorb( clnode->getClientSendMessage() );

			_network->unicast(clnode->getAddress64Ptr(), clnode->getAddress16(),
					msg.getMessagePtr(), msg.getMessageLength());
		}else if(ev->getEventType() == EtBroadcast){
			MQTTSnMessage msg = MQTTSnMessage();
			msg.absorb( ev->getMqttSnMessage() );
			_network->broadcast(msg.getMessagePtr(), msg.getMessageLength());
		}
		delete ev;
	}
}