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.
@@ -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