コード例 #1
0
TEST(RFM69W, setPacketFormat) {
  RFM_PACKETFORMAT pf = RFM_PACKETFORMAT_VARIABLE;
  std::queue<int> responses;
  std::queue<std::tuple<unsigned char, unsigned char>> resps;

  resps.push(std::make_tuple(0x37, 0x00));
  resps.push(std::make_tuple(0x00, 0b00010000));
  resps.push(std::make_tuple(0xB7, 0x00));
  resps.push(std::make_tuple(0b10010000, 0x00));

  EXPECT_EQ(0, setPacketFormat(&pf, fakeSpiFun, &resps));
}
コード例 #2
0
/**
 * send data as "host srcClientId ipaddr port"
 **/
int	main(int argc, char *argv[])
{
	int sock_fd;		
	int opt;		
    char *pBuf;
    char *pCmdBuf;
	struct sockaddr_in server_addr;
	struct loginMessage_s loginMessage;
	//struct command_s cmd;
    //union packet_un packet;
	int send_count;

    loginMessage.serverIP = "192.168.1.112";    /** default server ip  **/
    loginMessage.serverPort = "4852";           /** defautl server port **/
    //loginMessage.srcClientId = 101;              /** default client Id  **/
    //loginMessage.dstClientId = 102;              /** default client Id  **/

#if 0
    cmd.user = 0;       /** default user **/
    cmd.house = 15;     /** default house code **/
    cmd.key = 1;        /** default key code **/
    cmd.function = 15;  /** default function **/
    cmd.devType = 2;    /** default type **/
#endif
    pBuf = malloc(HRM_MAX_PACKET_LEN);
    if(NULL == pBuf)
    {
        printf("[%s-%d]: malloc failed! \n", __FILE__, __LINE__);
        return -1;
    }

    pCmdBuf = malloc(HRM_MAX_PACKET_LEN);
    if(NULL == pCmdBuf)
    {
        printf("[%s-%d]: malloc failed! \n", __FILE__, __LINE__);
        return -1;
    }
    pCmdBuf[0] = '\0';
#if 1
    setPacketFormat(pCmdBuf, "login-request");
    setDstImsi(pCmdBuf, "102");
    setDstDevType(pCmdBuf, "2");
    setDstUser(pCmdBuf, "0");
    setDstHouse(pCmdBuf, "15");
    setDstKey(pCmdBuf, "15");
    setFunction(pCmdBuf, "15");

    setSrcImsi(pCmdBuf, "101");

#else
    sprintf(pCmdBuf, "packet-format:login-request\n");
    strcat(pCmdBuf, "dstClientId:102\n");
    strcat(pCmdBuf, "dstUserCode:0\n");
    strcat(pCmdBuf, "dstHouseCode:15\n");
    strcat(pCmdBuf, "dstKeyCode:1\n");
    strcat(pCmdBuf, "dstFunctionCode:15\n");
    strcat(pCmdBuf, "dstDeviceType:2\n");
    strcat(pCmdBuf, "srcClientId:101\n");
#endif

    while((opt = getopt(argc, argv,"a:d:f:k:h:p:s:t:u:vH")) != -1)
    {
        switch(opt)
        {
            case 'a':   /** ip address **/
                loginMessage.serverIP = optarg;
                break;
            case 'p':   /** port address **/
                loginMessage.serverPort = optarg;           /** defautl server port **/
                break;

            case 'd':   /** dstClientId address **/
                setDstImsi(pCmdBuf, optarg);
                break;
            case 's':   /** srcClientId address **/
                setSrcImsi(pCmdBuf, optarg);
                break;

            case 'f':   /** function **/
                setFunction(pCmdBuf, optarg);
                break;
            case 'k':   /** key code **/
                setDstKey(pCmdBuf, optarg);
                break;
            case 'h':   /** house code **/
                setDstHouse(pCmdBuf, optarg);
                break;
            case 't':   /** devType **/
                setDstDevType(pCmdBuf, optarg);
                break;
            case 'u':   /** userCode **/
                setDstUser(pCmdBuf, optarg);
                break;

            case 'H':   /** help message **/
		        printf("eg: ./host -a ipAddr -p port -s srcClientId -d dstClientId"
                        "-f function -k keyCode -h houseCode"
                        "(./host -a 192.168.1.6 -p 4852 -s 101 -d 102 -u 0 -h 15 -k 1 -t 2 -f 5)\n");
                return  0;
                //break;
            case 'v':   /** version **/
                printf("version[%s-%s]", __DATE__, __TIME__);
                break;
            default:   /** help message **/
		        printf("eg: ./host -a ipAddr -p port -s srcClientId -d dstClientId -f function -k keyCode -h houseCode(./host -a 192.168.1.6 -p 4852 -s 101 -d 102 -u 0 -h 15 -k 1 -t 2 -f 5)\n");
                break;
        }
    }

    if(-1 == (sock_fd = socket(PF_INET, SOCK_DGRAM, 0)))
	{
		perror("socket");
		exit(2);
	}

	server_addr.sin_family = AF_INET;
	server_addr.sin_port = htons((unsigned short)atoi(loginMessage.serverPort));
	server_addr.sin_addr.s_addr = inet_addr(loginMessage.serverIP);

    opt = strlen(pCmdBuf);
	send_count = sendto(sock_fd, pCmdBuf, opt/** length **/, 0, (struct sockaddr *)&server_addr, sizeof(struct sockaddr_in));  
    if(send_count < 0) 
	{
		perror("send login message");
	    printf("[%s-%d]send error ...\n", __FILE__, __LINE__);
	}
    else
    {
		printf("[%s-%d]%d bytes login packet had been sent !!!\n"
                "---\n"
                "%s\n"
                "---\n"
                , __FILE__, __LINE__, send_count, pCmdBuf);
    }

    setPacketFormat(pCmdBuf, "data-send");
    opt = strlen(pCmdBuf);
#if 0
    pCmdBuf[opt] = (unsigned char)makeCrc8(0, (unsigned char *)pCmdBuf, opt);
    opt = strlen(pCmdBuf);
#endif
	send_count = sendto(sock_fd, pCmdBuf, opt/** length **/, 0, (struct sockaddr *)&server_addr, sizeof(struct sockaddr_in));  
	if(send_count > 0) 
	{
		printf("[%s-%d]%d bytes data had been sent !!!\n", __FILE__, __LINE__, send_count);
	}
    else
    {
	    perror("send");
		printf("[%s-%d]send error: [%d] !!!\n", __FILE__, __LINE__, errno);
    }

    setPacketFormat(pCmdBuf, "logout");
    opt = strlen(pCmdBuf);
	send_count = sendto(sock_fd, pCmdBuf, opt/** length **/, 0, (struct sockaddr *)&server_addr, sizeof(struct sockaddr_in));  
    if(send_count < 0) 
    {
		printf("[%s-%d]send error: [%d] !!!\n", __FILE__, __LINE__, errno);
    }

    printf(" ---\n%s ---\n", pCmdBuf);
	close(sock_fd);
	return 0;
}