haruzira_sdk 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +4 -0
- data/README.md +36 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/haruzira_sdk.gemspec +32 -0
- data/lib/haruzira_sdk/HaruziraMessage.rb +40 -0
- data/lib/haruzira_sdk/HaruziraRequire.rb +17 -0
- data/lib/haruzira_sdk/HzClientTcpCommunication.rb +799 -0
- data/lib/haruzira_sdk/HzEncryption.rb +145 -0
- data/lib/haruzira_sdk/HzTrace.rb +17 -0
- data/lib/haruzira_sdk/MsgAckCancelReading.rb +62 -0
- data/lib/haruzira_sdk/MsgAckSendSpeechData.rb +74 -0
- data/lib/haruzira_sdk/MsgAckStartComm.rb +72 -0
- data/lib/haruzira_sdk/MsgNotifyCompleteSpeech.rb +61 -0
- data/lib/haruzira_sdk/MsgNotifyEndComm.rb +66 -0
- data/lib/haruzira_sdk/MsgNotifyStopComm.rb +69 -0
- data/lib/haruzira_sdk/MsgReqCancelReading.rb +60 -0
- data/lib/haruzira_sdk/MsgReqStartComm.rb +99 -0
- data/lib/haruzira_sdk/MsgSendSpeechData.rb +120 -0
- data/lib/haruzira_sdk/version.rb +3 -0
- data/lib/haruzira_sdk.rb +6 -0
- metadata +111 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
require "openssl"
|
|
4
|
+
require "base64"
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
#region enum
|
|
8
|
+
# <summary>
|
|
9
|
+
# スピーチモード
|
|
10
|
+
# </summary>
|
|
11
|
+
module EncryptionType
|
|
12
|
+
AesCbc = 0
|
|
13
|
+
AesCbcPkcs7 = 1
|
|
14
|
+
end
|
|
15
|
+
#endregion
|
|
16
|
+
|
|
17
|
+
HZ_XOR_VALUE = 0xb7
|
|
18
|
+
|
|
19
|
+
class Encryption
|
|
20
|
+
|
|
21
|
+
def initialize()
|
|
22
|
+
#region 変数・定数
|
|
23
|
+
@BLOCK_SIZE = 16
|
|
24
|
+
#endregion
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# <summary>
|
|
29
|
+
# キーの生成(AES-CBC)
|
|
30
|
+
# </summary>
|
|
31
|
+
# <param name="strMsg">s生成を行うキー文字列</param>
|
|
32
|
+
# <returns>生成されたキー文字列</returns>
|
|
33
|
+
def createKey(k)
|
|
34
|
+
retKey = k
|
|
35
|
+
lack = retKey.bytesize % 16
|
|
36
|
+
#puts lack
|
|
37
|
+
if(lack != 0)
|
|
38
|
+
i = 0
|
|
39
|
+
j = 0
|
|
40
|
+
while i < (16 - lack)
|
|
41
|
+
retKey = retKey + j.to_s
|
|
42
|
+
i += 1
|
|
43
|
+
if(j < 9)
|
|
44
|
+
j += 1
|
|
45
|
+
else
|
|
46
|
+
j = 0
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
#puts retKey
|
|
52
|
+
return retKey
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# <summary>
|
|
56
|
+
# 文字列の暗号化(AES-CBC)
|
|
57
|
+
# </summary>
|
|
58
|
+
# <param name="strMsg">暗号化を行う文字列</param>
|
|
59
|
+
# <param name="encType">暗号化のアルゴリズム</param>
|
|
60
|
+
# <param name="strEncKey">暗号化キー文字列</param>
|
|
61
|
+
# <returns>暗号化されたbyte配列</returns>
|
|
62
|
+
def cipherEncryption(strMsg, encType, strEncKey)
|
|
63
|
+
enc_data = ""
|
|
64
|
+
|
|
65
|
+
begin
|
|
66
|
+
enc = OpenSSL::Cipher.new("AES-128-CBC")
|
|
67
|
+
enc.encrypt
|
|
68
|
+
enc_key = createKey(strEncKey)
|
|
69
|
+
enc.key = enc_key
|
|
70
|
+
enc.iv = reverseString(enc_key)
|
|
71
|
+
enc.padding = 1
|
|
72
|
+
enc_data = enc.update(strMsg)
|
|
73
|
+
enc_data << enc.final
|
|
74
|
+
|
|
75
|
+
rescue Exception => ex
|
|
76
|
+
p ex
|
|
77
|
+
enc_data = ""
|
|
78
|
+
ensure
|
|
79
|
+
return enc_data.unpack("C*")
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# <summary>
|
|
84
|
+
# 文字列の複合化(AES-CBC)
|
|
85
|
+
# </summary>
|
|
86
|
+
# <param name="decType">複合化のアルゴリズム</param>
|
|
87
|
+
# <param name="byteDecrypt">複合対象文字列</param>
|
|
88
|
+
# <param name="strDecKey">複合キー文字列</param>
|
|
89
|
+
# <returns>OK:複合化された文字列,NG:""</returns>
|
|
90
|
+
def cipherDecryption(decType, byteDecrypt, strDecKey)
|
|
91
|
+
dec_data = ""
|
|
92
|
+
|
|
93
|
+
begin
|
|
94
|
+
dec = OpenSSL::Cipher.new("AES-128-CBC")
|
|
95
|
+
dec.decrypt
|
|
96
|
+
dec_key = createKey(strDecKey)
|
|
97
|
+
dec.key = dec_key
|
|
98
|
+
dec.iv = reverseString(dec_key)
|
|
99
|
+
dec_data = dec.update(byteDecrypt)
|
|
100
|
+
dec_data << dec.final
|
|
101
|
+
|
|
102
|
+
rescue Exception => ex
|
|
103
|
+
p ex
|
|
104
|
+
dec_data = ""
|
|
105
|
+
ensure
|
|
106
|
+
return dec_data
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# <summary>
|
|
112
|
+
# 文字列を反転する
|
|
113
|
+
# </summary>
|
|
114
|
+
# <param name="strBuff">反転対象文字列</param>
|
|
115
|
+
# <returns>反転結果</returns>
|
|
116
|
+
def reverseString(strBuff)
|
|
117
|
+
rvsStr = strBuff.reverse
|
|
118
|
+
i = 0
|
|
119
|
+
retBuf = []
|
|
120
|
+
(rvsStr.bytes).each do |b|
|
|
121
|
+
retBuf.push(b ^ HZ_XOR_VALUE)
|
|
122
|
+
if(i > 15)
|
|
123
|
+
break
|
|
124
|
+
else
|
|
125
|
+
i += 1
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
return retBuf.pack("C*")
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# <summary>
|
|
134
|
+
# Base64にエンコードする
|
|
135
|
+
# </summary>
|
|
136
|
+
# <param name="buff">エンコード対象文字列バイト配列</param>
|
|
137
|
+
# <returns>エンコード結果</returns>
|
|
138
|
+
def encodeToBase64String(buff)
|
|
139
|
+
strBase64 = Base64.encode64(buff.pack("C*"))
|
|
140
|
+
|
|
141
|
+
return strBase64
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
end
|
|
145
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
|
|
4
|
+
class HzTrace
|
|
5
|
+
@@traceOutputFlg = false
|
|
6
|
+
|
|
7
|
+
def self.setTraceOutPut(flg)
|
|
8
|
+
@@traceOutputFlg = flg
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def self.traceCommMessage(msg)
|
|
12
|
+
if(@@traceOutputFlg)
|
|
13
|
+
puts msg
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
require "haruzira_sdk/HaruziraMessage"
|
|
4
|
+
|
|
5
|
+
# <summary>
|
|
6
|
+
# 読み上げ取り消し応答メッセージ(0x14)
|
|
7
|
+
# </summary>
|
|
8
|
+
class MsgAckCancelReading
|
|
9
|
+
|
|
10
|
+
def initialize()
|
|
11
|
+
#region 変数・定数定義
|
|
12
|
+
#メンバーIndex offset定義
|
|
13
|
+
@INDEX_ID = 0 #メッセージID
|
|
14
|
+
@INDEX_RESULT = 1 #結果
|
|
15
|
+
@INDEX_TIME_STAMP = 2 #タイムスタンプ(00:00:00)
|
|
16
|
+
|
|
17
|
+
# <summary>
|
|
18
|
+
# 送信メンバデータ値定義
|
|
19
|
+
# </summary>
|
|
20
|
+
#結果
|
|
21
|
+
@RESULT_OK_UNREAD = 0x00 #成功(読み上げ前)
|
|
22
|
+
@RESULT_OK_READING = 0x01 #成功(読み上げ中)
|
|
23
|
+
@RESULT_NG_READED = 0x02 #失敗(読み上げ済み)
|
|
24
|
+
@RESULT_NG_UNKNOWN = 0x03 #失敗(その他要因)
|
|
25
|
+
|
|
26
|
+
@id = MSG_ACK_CANCEL_READING #メッセージID
|
|
27
|
+
@result = RESULT_OK_UNREAD #結果
|
|
28
|
+
@time_stamp = Array.new(8, 0x00) #タイムスタンプ(00:00:00)
|
|
29
|
+
@total_len = 10 #送信フィールド合計サイズ
|
|
30
|
+
#endregion
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
#アクセサ定義(メンバーIndex offset)
|
|
34
|
+
attr_reader :INDEX_ID, :INDEX_RESULT, :INDEX_TIME_STAMP
|
|
35
|
+
|
|
36
|
+
#アクセサ定義(送信メンバデータ値)
|
|
37
|
+
attr_reader :RESULT_OK_UNREAD, :RESULT_OK_READING, :RESULT_NG_READED, :RESULT_NG_UNKNOWN
|
|
38
|
+
|
|
39
|
+
#アクセサ定義
|
|
40
|
+
attr_accessor :result, :time_stamp
|
|
41
|
+
attr_reader :id, :total_len
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
# <summary>
|
|
45
|
+
# 送信データ生成
|
|
46
|
+
# </summary>
|
|
47
|
+
# <returns>生成データサイズ, 生成データ</returns>
|
|
48
|
+
def makeSendData()
|
|
49
|
+
len = @total_len
|
|
50
|
+
data = nil
|
|
51
|
+
|
|
52
|
+
begin
|
|
53
|
+
data = [@id] + [@result] + @time_stamp
|
|
54
|
+
|
|
55
|
+
rescue Exception => ex
|
|
56
|
+
p ex
|
|
57
|
+
len = 0
|
|
58
|
+
ensure
|
|
59
|
+
return len, data
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
require "haruzira_sdk/HaruziraMessage"
|
|
4
|
+
|
|
5
|
+
# <summary>
|
|
6
|
+
# 読み上げデータ送信応答メッセージ(0x11)
|
|
7
|
+
# </summary>
|
|
8
|
+
class MsgAckSendSpeechData
|
|
9
|
+
|
|
10
|
+
def initialize()
|
|
11
|
+
#region 変数・定数定義
|
|
12
|
+
#メンバーIndex offset定義
|
|
13
|
+
@INDEX_ID = 0 #メッセージID
|
|
14
|
+
@INDEX_ACK_CODE = 1 #応答コード
|
|
15
|
+
@INDEX_ERR_CODE = 2 #エラーコード(異常時)
|
|
16
|
+
@INDEX_PADDING = 3 #アライメント
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# <summary>
|
|
20
|
+
# 送信メンバデータ値定義
|
|
21
|
+
# </summary>
|
|
22
|
+
#応答コード
|
|
23
|
+
@ACK_CODE_OK = 0x00 #正常
|
|
24
|
+
@ACK_CODE_NG = 0x01 #異常
|
|
25
|
+
#エラーコード(異常時)
|
|
26
|
+
@ERR_CODE_NONE = 0x00 #エラーなし
|
|
27
|
+
@ERR_CODE_RCV_DATA = 0x01 #受信データエラー
|
|
28
|
+
@ERR_CODE_CREATE_ACK_DATA = 0x02 #応答データ生成エラー
|
|
29
|
+
@ERR_CODE_DECODE_ENC = 0x03 #暗号化データ復号エラー
|
|
30
|
+
@ERR_CODE_UNKNOWN_IP = 0x04 #IPアドレスが不正
|
|
31
|
+
@ERR_CODE_ENCRIPTION_DISABLE = 0x05 #暗号化無効(パスワード認証が無効)
|
|
32
|
+
@ERR_CODE_BUFFER_FULL = 0x06 #バッファーフル
|
|
33
|
+
@ERR_CODE_OTHER_REASONS = 0x10 #その他原因によるエラー
|
|
34
|
+
|
|
35
|
+
@id = MSG_ACK_SEND_SPEECH_DATA #メッセージID
|
|
36
|
+
@ack_code = 0x00 #応答コード
|
|
37
|
+
@err_code = 0x00 #エラーコード(異常時)
|
|
38
|
+
@padding = Array.new(5, 0x00) #アライメント
|
|
39
|
+
@total_len = 8 #送信フィールド合計サイズ
|
|
40
|
+
#endregion
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
#アクセサ定義(メンバーIndex offset)
|
|
44
|
+
attr_reader :INDEX_ID, :INDEX_ACK_CODE, :INDEX_ERR_CODE, :INDEX_PADDING
|
|
45
|
+
|
|
46
|
+
#アクセサ定義(送信メンバデータ値)
|
|
47
|
+
attr_reader :ACK_CODE_OK, :ACK_CODE_NG, \
|
|
48
|
+
:ERR_CODE_NONE, :ERR_CODE_RCV_DATA, :ERR_CODE_CREATE_ACK_DATA, :ERR_CODE_DECODE_ENC, :ERR_CODE_UNKNOWN_IP, \
|
|
49
|
+
:ERR_CODE_ENCRIPTION_DISABLE, :ERR_CODE_BUFFER_FULL, :ERR_CODE_OTHER_REASONS
|
|
50
|
+
|
|
51
|
+
#アクセサ定義
|
|
52
|
+
attr_accessor :ack_code, :err_code, :padding
|
|
53
|
+
attr_reader :id, :total_len
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
# <summary>
|
|
57
|
+
# 送信データ生成
|
|
58
|
+
# </summary>
|
|
59
|
+
# <returns>生成データサイズ, 生成データ</returns>
|
|
60
|
+
def makeSendData()
|
|
61
|
+
len = @total_len
|
|
62
|
+
data = nil
|
|
63
|
+
|
|
64
|
+
begin
|
|
65
|
+
data = [@id] + [@ack_code] + [@err_code] + @padding
|
|
66
|
+
|
|
67
|
+
rescue Exception => ex
|
|
68
|
+
p ex
|
|
69
|
+
len = 0
|
|
70
|
+
ensure
|
|
71
|
+
return len, data
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
require "haruzira_sdk/HaruziraMessage"
|
|
4
|
+
|
|
5
|
+
# <summary>
|
|
6
|
+
# 通信開始応答メッセージ(0x10)
|
|
7
|
+
# </summary>
|
|
8
|
+
class MsgAckStartComm
|
|
9
|
+
|
|
10
|
+
def initialize()
|
|
11
|
+
#region 変数・定数定義
|
|
12
|
+
#メンバーIndex offset定義
|
|
13
|
+
@INDEX_ID = 0 #メッセージID
|
|
14
|
+
@INDEX_ACK_CODE = 1 #応答コード
|
|
15
|
+
@INDEX_ERR_CODE = 2 #エラーコード(異常時)
|
|
16
|
+
@INDEX_PADDING = 3 #アライメント
|
|
17
|
+
|
|
18
|
+
# <summary>
|
|
19
|
+
# 送信メンバデータ値定義
|
|
20
|
+
# </summary>
|
|
21
|
+
#応答コード
|
|
22
|
+
@ACK_CODE_OK = 0x00 #正常
|
|
23
|
+
@ACK_CODE_NG = 0x01 #異常
|
|
24
|
+
#エラーコード(異常時)
|
|
25
|
+
@ERR_CODE_NONE = 0x00 #エラーなし
|
|
26
|
+
@ERR_CODE_RCV_DATA = 0x01 #受信データエラー
|
|
27
|
+
@ERR_CODE_CREATE_ACK_DATA = 0x02 #応答データ生成エラー
|
|
28
|
+
@ERR_CODE_DECODE_ENC = 0x03 #暗号化データ復号エラー
|
|
29
|
+
@ERR_CODE_CER_USER = 0x04 #認証エラー(ユーザー不正)
|
|
30
|
+
@ERR_CODE_CER_PASSWD = 0x05 #認証エラー(パスワード不正)
|
|
31
|
+
@ERR_CODE_UNKNOWN_IP = 0x06 #IPアドレスが不正
|
|
32
|
+
@ERR_CODE_OTHER_REASONS = 0x10 #その他原因によるエラー
|
|
33
|
+
|
|
34
|
+
@id = MSG_ACK_START_COMM #メッセージID
|
|
35
|
+
@ack_code = 0x00 #応答コード
|
|
36
|
+
@err_code = 0x00 #エラーコード(異常時)
|
|
37
|
+
@padding = Array.new(5, 0x00) #アライメント
|
|
38
|
+
@total_len = 8 #送信フィールド合計サイズ
|
|
39
|
+
#endregion
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
#アクセサ定義(メンバーIndex offset)
|
|
43
|
+
attr_reader :INDEX_ID, :INDEX_ACK_CODE, :INDEX_ERR_CODE, :INDEX_PADDING
|
|
44
|
+
|
|
45
|
+
#アクセサ定義(送信メンバデータ値)
|
|
46
|
+
attr_reader :ACK_CODE_OK, :ACK_CODE_NG, :ERR_CODE_NONE, :ERR_CODE_RCV_DATA, :ERR_CODE_CREATE_ACK_DATA, \
|
|
47
|
+
:ERR_CODE_DECODE_ENC, :ERR_CODE_CER_USER, :ERR_CODE_CER_PASSWD, :ERR_CODE_OTHER_REASONS
|
|
48
|
+
|
|
49
|
+
#アクセサ定義
|
|
50
|
+
attr_accessor :ack_code, :err_code, :padding
|
|
51
|
+
attr_reader :id, :total_len
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
# <summary>
|
|
55
|
+
# 送信データ生成
|
|
56
|
+
# </summary>
|
|
57
|
+
# <returns>生成データサイズ, 生成データ</returns>
|
|
58
|
+
def makeSendData()
|
|
59
|
+
len = total_len
|
|
60
|
+
data = nil
|
|
61
|
+
|
|
62
|
+
begin
|
|
63
|
+
data = [@id] + [@ack_code] + [@err_code] + @padding
|
|
64
|
+
|
|
65
|
+
rescue Exception => ex
|
|
66
|
+
p ex
|
|
67
|
+
len = 0
|
|
68
|
+
ensure
|
|
69
|
+
return len, data
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
require "haruzira_sdk/HaruziraMessage"
|
|
4
|
+
|
|
5
|
+
# <summary>
|
|
6
|
+
# 読み上げ完了通知メッセージ(0x13)
|
|
7
|
+
# </summary>
|
|
8
|
+
class MsgNotifyCompleteSpeech
|
|
9
|
+
|
|
10
|
+
def initialize()
|
|
11
|
+
#region 変数・定数定義
|
|
12
|
+
#メンバーIndex offset定義
|
|
13
|
+
@INDEX_ID = 0 #メッセージID
|
|
14
|
+
@INDEX_RESULT = 1 #結果
|
|
15
|
+
@INDEX_TIME_STAMP = 2 #タイムスタンプ(00:00:00)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# <summary>
|
|
19
|
+
# 送信メンバデータ値定義
|
|
20
|
+
# </summary>
|
|
21
|
+
#結果
|
|
22
|
+
@RESULT_CODE_OK = 0x00 #成功
|
|
23
|
+
@RESULT_CODE_NG = 0x01 #失敗
|
|
24
|
+
|
|
25
|
+
@id = MSG_NOTIFY_COMPLETE_SPEECH #メッセージID
|
|
26
|
+
@result = @RESULT_CODE_OK #結果
|
|
27
|
+
@time_stamp = Array.new(8, 0x00) #タイムスタンプ(00:00:00)
|
|
28
|
+
@total_len = 10 #送信フィールド合計サイズ
|
|
29
|
+
#endregion
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
#アクセサ定義(メンバーIndex offset)
|
|
33
|
+
attr_reader :INDEX_ID, :INDEX_RESULT, :INDEX_TIME_STAMP
|
|
34
|
+
|
|
35
|
+
#アクセサ定義(送信メンバデータ値)
|
|
36
|
+
attr_reader :RESULT_CODE_OK, :RESULT_CODE_NG
|
|
37
|
+
|
|
38
|
+
#アクセサ定義
|
|
39
|
+
attr_accessor :result, :time_stamp
|
|
40
|
+
attr_reader :id, :total_len
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
# <summary>
|
|
44
|
+
# 送信データ生成
|
|
45
|
+
# </summary>
|
|
46
|
+
# <returns>生成データサイズ, 生成データ</returns>
|
|
47
|
+
def makeSendData()
|
|
48
|
+
len = @total_len
|
|
49
|
+
data = nil
|
|
50
|
+
|
|
51
|
+
begin
|
|
52
|
+
data = [@id] + [@result] + @time_stamp
|
|
53
|
+
|
|
54
|
+
rescue Exception => ex
|
|
55
|
+
p ex
|
|
56
|
+
len = 0
|
|
57
|
+
ensure
|
|
58
|
+
return len, data
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
require "haruzira_sdk/HaruziraMessage"
|
|
4
|
+
|
|
5
|
+
# <summary>
|
|
6
|
+
# 通信終了通知メッセージ(0x01)
|
|
7
|
+
# </summary>
|
|
8
|
+
class MsgNotifyEndComm
|
|
9
|
+
|
|
10
|
+
def initialize()
|
|
11
|
+
#region 変数・定数定義
|
|
12
|
+
#メンバーIndex offset定義
|
|
13
|
+
@INDEX_ID = 0 #メッセージID
|
|
14
|
+
@INDEX_END_CODE = 1 #終了コード
|
|
15
|
+
@INDEX_ERR_CODE = 2 #NGコード(異常時)
|
|
16
|
+
@INDEX_PADDING = 3 #アライメント
|
|
17
|
+
|
|
18
|
+
# <summary>
|
|
19
|
+
# 送信メンバデータ値定義
|
|
20
|
+
# </summary>
|
|
21
|
+
#終了コード
|
|
22
|
+
@END_CODE_OK = 0x00 #正常
|
|
23
|
+
@END_CODE_NG = 0x01 #異常
|
|
24
|
+
#NGコード(異常時)
|
|
25
|
+
@ERR_CODE_NONE = 0x00 #エラーなし(正常終了)
|
|
26
|
+
@ERR_CODE_RCV_DATA = 0x01 #受信データエラー
|
|
27
|
+
@ERR_CODE_OTHER_REASONS = 0x02 #その他原因によるエラー
|
|
28
|
+
|
|
29
|
+
@id = MSG_NOTIFY_END_COMM #メッセージID
|
|
30
|
+
@end_code = 0x00 #終了コード
|
|
31
|
+
@err_code = 0x00 #NGコード(異常時)
|
|
32
|
+
@padding = Array.new(5, 0x00) #アライメント
|
|
33
|
+
@total_len = 8 #送信フィールド合計サイズ
|
|
34
|
+
#endregion
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
#アクセサ定義(メンバーIndex offset)
|
|
38
|
+
attr_reader :INDEX_ID, :INDEX_END_CODE, :INDEX_ERR_CODE, :INDEX_PADDING
|
|
39
|
+
|
|
40
|
+
#アクセサ定義(送信メンバデータ値)
|
|
41
|
+
attr_reader :END_CODE_OK, :END_CODE_NG, :ERR_CODE_NONE, :ERR_CODE_RCV_DATA, :ERR_CODE_OTHER_REASONS
|
|
42
|
+
|
|
43
|
+
#アクセサ定義
|
|
44
|
+
attr_accessor :end_code, :err_code, :padding
|
|
45
|
+
attr_reader :id, :total_len
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
# <summary>
|
|
49
|
+
# 送信データ生成
|
|
50
|
+
# </summary>
|
|
51
|
+
# <returns>生成データサイズ, 生成データ</returns>
|
|
52
|
+
def makeSendData()
|
|
53
|
+
len = @total_len
|
|
54
|
+
data = nil
|
|
55
|
+
|
|
56
|
+
begin
|
|
57
|
+
data = [@id] + [@end_code] + [@err_code] + @padding
|
|
58
|
+
|
|
59
|
+
rescue Exception => ex
|
|
60
|
+
p ex
|
|
61
|
+
len = 0
|
|
62
|
+
ensure
|
|
63
|
+
return len, data
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
require "haruzira_sdk/HaruziraMessage"
|
|
4
|
+
|
|
5
|
+
# <summary>
|
|
6
|
+
# 通信停止通知メッセージ(0x11)
|
|
7
|
+
# </summary>
|
|
8
|
+
class MsgNotifyStopComm
|
|
9
|
+
|
|
10
|
+
def initialize()
|
|
11
|
+
#region 変数・定数定義
|
|
12
|
+
#メンバーIndex offset定義
|
|
13
|
+
@INDEX_ID = 0 #メッセージID
|
|
14
|
+
@INDEX_STOP_CODE = 1 #停止コード
|
|
15
|
+
@INDEX_REASON_CODE = 2 #停止理由コード
|
|
16
|
+
@INDEX_PADDING = 3 #アライメント
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# <summary>
|
|
20
|
+
# 送信メンバデータ値定義
|
|
21
|
+
# </summary>
|
|
22
|
+
#応答コード
|
|
23
|
+
@STOP_CODE_OK = 0x00 #正常
|
|
24
|
+
@STOP_CODE_NG = 0x01 #異常
|
|
25
|
+
#停止理由コード
|
|
26
|
+
@REASON_CODE_NONE = 0x00 #通常停止
|
|
27
|
+
@REASON_CODE_MAINTENANCE = 0x01 #メンテナンス(一時的な停止)
|
|
28
|
+
@REASON_CODE_FAILURE = 0x02 #障害発生(恒久的な停止、復旧スケジュールが不明の場合など)
|
|
29
|
+
|
|
30
|
+
@id = MSG_NOTIFY_STOP_COMM #メッセージID
|
|
31
|
+
@stop_code = 0x00 #停止コード
|
|
32
|
+
@reason_code = 0x00 #停止理由コード
|
|
33
|
+
@padding = Array.new(5, 0x00) #アライメント
|
|
34
|
+
@total_len = 8 #送信フィールド合計サイズ
|
|
35
|
+
#endregion
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
#アクセサ定義(メンバーIndex offset)
|
|
39
|
+
attr_reader :INDEX_ID, :INDEX_STOP_CODE, :INDEX_REASON_CODE, :INDEX_PADDING
|
|
40
|
+
|
|
41
|
+
#アクセサ定義(送信メンバデータ値)
|
|
42
|
+
attr_reader :STOP_CODE_OK, :STOP_CODE_NG, :REASON_CODE_NONE, :REASON_CODE_MAINTENANCE, :REASON_CODE_FAILURE
|
|
43
|
+
|
|
44
|
+
#アクセサ定義
|
|
45
|
+
attr_accessor :stop_code, :reason_code, :padding
|
|
46
|
+
attr_reader :id, :total_len
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# <summary>
|
|
52
|
+
# 送信データ生成
|
|
53
|
+
# </summary>
|
|
54
|
+
# <returns>生成データサイズ, 生成データ</returns>
|
|
55
|
+
def makeSendData()
|
|
56
|
+
len = @total_len
|
|
57
|
+
data = nil
|
|
58
|
+
|
|
59
|
+
begin
|
|
60
|
+
data = [@id] + [@stop_code] + [@reason_code] + @padding
|
|
61
|
+
|
|
62
|
+
rescue Exception => ex
|
|
63
|
+
p ex
|
|
64
|
+
len = 0
|
|
65
|
+
ensure
|
|
66
|
+
return len, data
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/ruby
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
require "haruzira_sdk/HaruziraMessage"
|
|
4
|
+
|
|
5
|
+
# <summary>
|
|
6
|
+
# 読み上げ取り消し要求メッセージ(0x04)
|
|
7
|
+
# </summary>
|
|
8
|
+
class MsgReqCancelReading
|
|
9
|
+
|
|
10
|
+
def initialize()
|
|
11
|
+
#region 変数・定数定義
|
|
12
|
+
# <summary>
|
|
13
|
+
# メンバーIndex offset定義
|
|
14
|
+
# </summary>
|
|
15
|
+
@INDEX_ID = 0 #メッセージID
|
|
16
|
+
@INDEX_RESERVE = 1 #予備
|
|
17
|
+
@INDEX_TIME_STAMP = 2 #タイムスタンプ(00:00:00)
|
|
18
|
+
|
|
19
|
+
# <summary>
|
|
20
|
+
# 送信メンバデータ値定義
|
|
21
|
+
# </summary>
|
|
22
|
+
#なし
|
|
23
|
+
|
|
24
|
+
@id = MSG_REQ_CANCEL_READING #メッセージID
|
|
25
|
+
@reserve = 0x00 #予備
|
|
26
|
+
@time_stamp = Array.new(8, 0x00) #タイムスタンプ(00:00:00)
|
|
27
|
+
@total_len = 10 #送信フィールド合計サイズ
|
|
28
|
+
#endregion
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
#アクセサ定義(メンバーIndex offset)
|
|
32
|
+
attr_reader :INDEX_ID, :INDEX_RESERVE, :INDEX_TIME_STAMP
|
|
33
|
+
|
|
34
|
+
#アクセサ定義(送信メンバデータ値)
|
|
35
|
+
#attr_reader :END_CODE_OK, :END_CODE_NG, :ERR_CODE_NONE, :ERR_CODE_RCV_DATA, :ERR_CODE_OTHER_REASONS
|
|
36
|
+
|
|
37
|
+
#アクセサ定義
|
|
38
|
+
attr_accessor :reserve, :time_stamp
|
|
39
|
+
attr_reader :id, :total_len
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# <summary>
|
|
43
|
+
# 送信データ生成
|
|
44
|
+
# </summary>
|
|
45
|
+
# <returns>生成データサイズ, 生成データ</returns>
|
|
46
|
+
def makeSendData()
|
|
47
|
+
len = @total_len
|
|
48
|
+
data = nil
|
|
49
|
+
|
|
50
|
+
begin
|
|
51
|
+
data = [@id] + [@reserve] + @time_stamp
|
|
52
|
+
|
|
53
|
+
rescue Exception => ex
|
|
54
|
+
p ex
|
|
55
|
+
len = 0
|
|
56
|
+
ensure
|
|
57
|
+
return len, data
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|