@@ -3,6 +3,7 @@ const DMR = require('../../DMR');
3
3
const Golay2087 = require ( '../../Encoders/Golay2087' ) ;
4
4
const Trellis = require ( '../../Encoders/Trellis' ) ;
5
5
const BPTC19696 = require ( '../../Encoders/BPTC19696' ) ;
6
+ const BitUtils = require ( "../../BitUtils" ) ;
6
7
7
8
class VoiceData extends Packet {
8
9
static CALL_TYPE_GROUP = 0 ;
@@ -111,7 +112,7 @@ class VoiceData extends Packet {
111
112
112
113
let colorCode = ( code >> 4 ) & 0x0F ;
113
114
let dataType = ( code >> 0 ) & 0x0F ;
114
- let bitsStr = this . bufferToBits ( buffer ) ;
115
+ let bitsStr = BitUtils . bufferToBitsStr ( buffer ) ;
115
116
let dataBits ;
116
117
117
118
if ( dataType === DMR . Packet . DATA_TYPE_CONFIRMED_DATA_CONT ) {
@@ -122,45 +123,27 @@ class VoiceData extends Packet {
122
123
dataBits = BPTC19696 . decode ( bitsStr . substring ( 0 , 98 ) + bitsStr . substring ( 166 ) )
123
124
}
124
125
125
- return [ DMR . Packet . from ( this . bitsToBuffer ( dataBits ) , dataType ) , colorCode ] ;
126
+ return [ DMR . Packet . from ( BitUtils . bitsStrToBuffer ( dataBits ) , dataType ) , colorCode ] ;
126
127
}
127
128
128
129
static encodeDMR ( dmr , colorCode ) {
129
130
let slotType = Golay2087 . encode ( ( ( colorCode << 4 ) & 0xF0 ) | ( ( dmr . dataType << 0 ) & 0x0F ) ) ;
130
131
131
- let bitsSlot = this . bufferToBits ( Buffer . from ( slotType ) ) ;
132
+ let bitsSlot = BitUtils . bufferToBitsStr ( Buffer . from ( slotType ) ) ;
132
133
133
134
let l_slot = bitsSlot . substr ( 0 , 10 ) ;
134
135
let r_slot = bitsSlot . substr ( 10 , 10 ) ;
135
136
136
137
let sync_data = '110101011101011111110111011111111101011101010111' ;
137
138
138
- let bitsPayload = this . bufferToBits ( dmr . getBuffer ( ) ) ;
139
+ let bitsPayload = BitUtils . bufferToBitsStr ( dmr . getBuffer ( ) ) ;
139
140
140
141
let encodedData = BPTC19696 . encode ( bitsPayload ) ;
141
142
142
143
let outPacket = encodedData . substr ( 0 , 98 ) + l_slot + sync_data + r_slot + encodedData . substr ( 98 ) ;
143
144
144
- return this . bitsToBuffer ( outPacket ) ;
145
+ return BitUtils . bitsStrToBuffer ( outPacket ) ;
145
146
}
146
-
147
- static bitsToBuffer ( bitsStr ) {
148
- let buffer = Buffer . alloc ( Math . ceil ( bitsStr . length / 8 ) ) ;
149
-
150
- for ( let c = 0 ; c < bitsStr . length ; c += 8 )
151
- buffer . writeUInt8 ( parseInt ( bitsStr . substr ( c , 8 ) . padEnd ( 8 , '0' ) , 2 ) , c / 8 ) ; //padEnd need because last byte can be without trailing zeroes
152
-
153
- return buffer ;
154
- } ;
155
-
156
- static bufferToBits ( buffer ) {
157
- let bitsStr = '' ;
158
-
159
- for ( let i = 0 ; i < buffer . length ; i ++ )
160
- bitsStr += ( "00000000" + ( buffer . readUInt8 ( i ) >>> 0 ) . toString ( 2 ) ) . substr ( - 8 ) ;
161
-
162
- return bitsStr ;
163
- } ;
164
147
}
165
148
166
149
0 commit comments