ARCS6 AR6-REV.24062600
読み取り中…
検索中…
一致する文字列を見つけられません
UDPReceiver.hh
[詳解]
1
8//
9// Copyright (C) 2011-2019 Yuki YOKOKURA
10// This program is free software;
11// you can redistribute it and/or modify it under the terms of the FreeBSD License.
12// For details, see the License.txt file.
13
14#ifndef UDPRECV
15#define UDPRECV
16
17#include <sys/types.h>
18#include <sys/socket.h>
19#include <netinet/in.h>
20#include <arpa/inet.h>
21
22namespace ARCS { // ARCS名前空間
25 public:
26 // 受信データの型の設定用定義
27 enum VarType {
28 UDP_INT16_T, // int16_t型
29 UDP_INT32_T, // int32_t型
30 UDP_UINT16_T, // uint16_t型
31 UDP_UINT32_T, // uint32_t型
32 UDP_DOUBLE // double型
33 };
34 // コンストラクタ
35 // PortNum : 待受Port番号, TypeOfVar : 受信する変数の型(ヘッダの定義を参照せよ)
36 // NumOfVar : 受信する変数の数
37 UDPReceiver(const unsigned short PortNum, VarType TypeOfVar, unsigned int NumOfVar);
38 UDPReceiver(const char* IPaddress, const unsigned short PortNum, VarType TypeOfVar, unsigned int NumOfVar);
39 ~UDPReceiver(); // デストラクタ
40 volatile bool GetReceiveFlag(void); // 受信フラグを取得する関数
41 volatile bool ReBind(void); // バインドし直す関数
42 // 変数値と実際に受信した要素数を取得する関数(オーバーロード)
43 unsigned int Receive(int16_t* Data);
44 unsigned int Receive(int32_t* Data);
45 unsigned int Receive(uint16_t* Data);
46 unsigned int Receive(uint32_t* Data);
47 unsigned int Receive(double* Data);
48
49 private:
50 UDPReceiver(const UDPReceiver&); // コピーコンストラクタ使用禁止
51 const UDPReceiver& operator=(const UDPReceiver&); // 代入演算子使用禁止
52 static const unsigned int TimeToReBind = 100000; // [us] バインド再試行周期
53 static void ReceiveThread(UDPReceiver *p); // 受信スレッド
54 int sock; // ソケットファイルディスクリプタ
55 struct sockaddr_in addr; // ソケット構造体
56 VarType VariableType; // 受信するデータの型
57 unsigned int VarNum; // 受信する変数の数
58 char* RecvData; // 受信バイナリデータ
59 size_t RecvBytes; // 受信バイナリデータのバイト数
60 ssize_t ActRecvBytes; // 実際に受信したバイナリデータのバイト数(若しくはエラー番号)
61 pthread_t ThreadID; // スレッドID
62 volatile bool ReceiveFlag; // 受信フラグ 受信時にtrue,未受信時にfalseとなる。リセットはGetReceiveFlagから行う。
63 static size_t CalcRecvBytes(VarType TypeOfVar, unsigned int NumOfVar); // 受信するデータの型からバイト数を計算する関数
64
65 };
66}
67
68#endif
69
70
71
UDP受信器クラス
Definition UDPReceiver.hh:24