@@ -107,50 +107,6 @@ func NewNetworkFrame(buf []byte) NetworkFrame {
107
107
return frame
108
108
}
109
109
110
- func networkFrameGenerator () func (* bytes.Buffer , byte , byte ) * bytes.Buffer {
111
- // func networkFrameGenerator() func(*bytes.Buffer, byte, byte) NetworkFrame {
112
- //
113
- // ARNETWORKAL_Frame_t
114
- //
115
- // uint8 type - frame type ARNETWORK_FRAME_TYPE
116
- // uint8 id - identifier of the buffer sending the frame
117
- // uint8 seq - sequence number of the frame
118
- // uint32 size - size of the frame
119
- //
120
-
121
- // each frame id has it's own sequence number
122
- seq := make (map [byte ]byte )
123
-
124
- hlen := 7 // size of ARNETWORKAL_Frame_t header
125
-
126
- return func (cmd * bytes.Buffer , frameType byte , id byte ) * bytes.Buffer {
127
- if _ , ok := seq [id ]; ! ok {
128
- seq [id ] = 0
129
- }
130
-
131
- seq [id ]++
132
-
133
- if seq [id ] > 255 {
134
- seq [id ] = 0
135
- }
136
-
137
- ret := & bytes.Buffer {}
138
- ret .WriteByte (frameType )
139
- ret .WriteByte (id )
140
- ret .WriteByte (seq [id ])
141
-
142
- size := & bytes.Buffer {}
143
- if err := binary .Write (size , binary .LittleEndian , uint32 (cmd .Len ()+ hlen )); err != nil {
144
- panic (err )
145
- }
146
-
147
- ret .Write (size .Bytes ())
148
- ret .Write (cmd .Bytes ())
149
-
150
- return ret
151
- }
152
- }
153
-
154
110
type Pcmd struct {
155
111
Flag int
156
112
Roll int
@@ -161,33 +117,33 @@ type Pcmd struct {
161
117
}
162
118
163
119
type Bebop struct {
164
- IP string
165
- NavData map [string ]string
166
- Pcmd Pcmd
167
- tmpFrame tmpFrame
168
- C2dPort int
169
- D2cPort int
170
- RTPStreamPort int
171
- RTPControlPort int
172
- DiscoveryPort int
173
- c2dClient * net.UDPConn
174
- d2cClient * net.UDPConn
175
- discoveryClient * net.TCPConn
176
- networkFrameGenerator func ( * bytes. Buffer , byte , byte ) * bytes. Buffer
177
- video chan []byte
178
- writeChan chan []byte
120
+ IP string
121
+ NavData map [string ]string
122
+ Pcmd Pcmd
123
+ tmpFrame tmpFrame
124
+ C2dPort int
125
+ D2cPort int
126
+ RTPStreamPort int
127
+ RTPControlPort int
128
+ DiscoveryPort int
129
+ c2dClient * net.UDPConn
130
+ d2cClient * net.UDPConn
131
+ discoveryClient * net.TCPConn
132
+ nwFrameGenerator * nwFrameGenerator
133
+ video chan []byte
134
+ writeChan chan []byte
179
135
}
180
136
181
137
func New () * Bebop {
182
138
return & Bebop {
183
- IP : "192.168.42.1" ,
184
- NavData : make (map [string ]string ),
185
- C2dPort : 54321 ,
186
- D2cPort : 43210 ,
187
- RTPStreamPort : 55004 ,
188
- RTPControlPort : 55005 ,
189
- DiscoveryPort : 44444 ,
190
- networkFrameGenerator : networkFrameGenerator (),
139
+ IP : "192.168.42.1" ,
140
+ NavData : make (map [string ]string ),
141
+ C2dPort : 54321 ,
142
+ D2cPort : 43210 ,
143
+ RTPStreamPort : 55004 ,
144
+ RTPControlPort : 55005 ,
145
+ DiscoveryPort : 44444 ,
146
+ nwFrameGenerator : newNetworkFrameGenerator (),
191
147
Pcmd : Pcmd {
192
148
Flag : 0 ,
193
149
Roll : 0 ,
@@ -332,7 +288,7 @@ func (b *Bebop) FlatTrim() error {
332
288
333
289
cmd .Write (tmp .Bytes ())
334
290
335
- return b .write (b .networkFrameGenerator (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
291
+ return b .write (b .nwFrameGenerator . generate (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
336
292
}
337
293
338
294
func (b * Bebop ) GenerateAllStates () error {
@@ -352,7 +308,7 @@ func (b *Bebop) GenerateAllStates() error {
352
308
353
309
cmd .Write (tmp .Bytes ())
354
310
355
- return b .write (b .networkFrameGenerator (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
311
+ return b .write (b .nwFrameGenerator . generate (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
356
312
}
357
313
358
314
func (b * Bebop ) TakeOff () error {
@@ -372,7 +328,7 @@ func (b *Bebop) TakeOff() error {
372
328
373
329
cmd .Write (tmp .Bytes ())
374
330
375
- return b .write (b .networkFrameGenerator (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
331
+ return b .write (b .nwFrameGenerator . generate (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
376
332
}
377
333
378
334
func (b * Bebop ) Land () error {
@@ -392,7 +348,7 @@ func (b *Bebop) Land() error {
392
348
393
349
cmd .Write (tmp .Bytes ())
394
350
395
- return b .write (b .networkFrameGenerator (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
351
+ return b .write (b .nwFrameGenerator . generate (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
396
352
}
397
353
398
354
func (b * Bebop ) Up (val int ) error {
@@ -516,7 +472,7 @@ func (b *Bebop) generatePcmd() *bytes.Buffer {
516
472
}
517
473
cmd .Write (tmp .Bytes ())
518
474
519
- return b .networkFrameGenerator (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID )
475
+ return b .nwFrameGenerator . generate (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID )
520
476
}
521
477
522
478
func (b * Bebop ) createAck (frame NetworkFrame ) * bytes.Buffer {
@@ -528,14 +484,14 @@ func (b *Bebop) createAck(frame NetworkFrame) *bytes.Buffer {
528
484
// libARNetwork/Sources/ARNETWORK_Manager.h#ARNETWORK_Manager_IDOutputToIDAck
529
485
//
530
486
531
- return b .networkFrameGenerator (bytes .NewBuffer ([]byte {uint8 (frame .Seq )}),
487
+ return b .nwFrameGenerator . generate (bytes .NewBuffer ([]byte {uint8 (frame .Seq )}),
532
488
ARNETWORKAL_FRAME_TYPE_ACK ,
533
489
byte (uint16 (frame .Id )+ (ARNETWORKAL_MANAGER_DEFAULT_ID_MAX / 2 )),
534
490
)
535
491
}
536
492
537
493
func (b * Bebop ) createPong (frame NetworkFrame ) * bytes.Buffer {
538
- return b .networkFrameGenerator (bytes .NewBuffer (frame .Data ),
494
+ return b .nwFrameGenerator . generate (bytes .NewBuffer (frame .Data ),
539
495
ARNETWORKAL_FRAME_TYPE_DATA ,
540
496
ARNETWORK_MANAGER_INTERNAL_BUFFER_ID_PONG ,
541
497
)
@@ -579,13 +535,13 @@ func (b *Bebop) packetReceiver(buf []byte) {
579
535
func (b * Bebop ) StartRecording () error {
580
536
buf := b .videoRecord (ARCOMMANDS_ARDRONE3_MEDIARECORD_VIDEO_RECORD_START )
581
537
582
- return b .write (b .networkFrameGenerator (buf , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
538
+ return b .write (b .nwFrameGenerator . generate (buf , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
583
539
}
584
540
585
541
func (b * Bebop ) StopRecording () error {
586
542
buf := b .videoRecord (ARCOMMANDS_ARDRONE3_MEDIARECORD_VIDEO_RECORD_STOP )
587
543
588
- return b .write (b .networkFrameGenerator (buf , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
544
+ return b .write (b .nwFrameGenerator . generate (buf , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
589
545
}
590
546
591
547
func (b * Bebop ) videoRecord (state byte ) * bytes.Buffer {
@@ -650,7 +606,7 @@ func (b *Bebop) HullProtection(protect bool) error {
650
606
}
651
607
cmd .Write (tmp .Bytes ())
652
608
653
- return b .write (b .networkFrameGenerator (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
609
+ return b .write (b .nwFrameGenerator . generate (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
654
610
}
655
611
656
612
func (b * Bebop ) Outdoor (outdoor bool ) error {
@@ -679,7 +635,7 @@ func (b *Bebop) Outdoor(outdoor bool) error {
679
635
}
680
636
cmd .Write (tmp .Bytes ())
681
637
682
- return b .write (b .networkFrameGenerator (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
638
+ return b .write (b .nwFrameGenerator . generate (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
683
639
}
684
640
685
641
func (b * Bebop ) VideoEnable (enable bool ) error {
@@ -704,7 +660,7 @@ func (b *Bebop) VideoEnable(enable bool) error {
704
660
}
705
661
cmd .Write (tmp .Bytes ())
706
662
707
- return b .write (b .networkFrameGenerator (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
663
+ return b .write (b .nwFrameGenerator . generate (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
708
664
}
709
665
710
666
func (b * Bebop ) VideoStreamMode (mode int8 ) error {
@@ -729,7 +685,7 @@ func (b *Bebop) VideoStreamMode(mode int8) error {
729
685
}
730
686
cmd .Write (tmp .Bytes ())
731
687
732
- return b .write (b .networkFrameGenerator (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
688
+ return b .write (b .nwFrameGenerator . generate (cmd , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_NONACK_ID ).Bytes ())
733
689
}
734
690
735
691
func bool2int8 (b bool ) int8 {
@@ -826,5 +782,5 @@ func (b *Bebop) createARStreamACK(frame ARStreamFrame) *bytes.Buffer {
826
782
}
827
783
ackPacket .Write (tmp .Bytes ())
828
784
829
- return b .networkFrameGenerator (ackPacket , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_VIDEO_ACK_ID )
785
+ return b .nwFrameGenerator . generate (ackPacket , ARNETWORKAL_FRAME_TYPE_DATA , BD_NET_CD_VIDEO_ACK_ID )
830
786
}
0 commit comments