Changeset 5511
- Timestamp:
- 10/25/07 13:12:50 (6 years ago)
- Location:
- experimental/components/rc2007_gui
- Files:
-
- 2 modified
-
WorkModules.py (modified) (10 diffs)
-
port_impl.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
experimental/components/rc2007_gui/WorkModules.py
r5508 r5511 36 36 import ossaudiodev 37 37 import struct # for audio 38 import copy 38 39 39 40 import cvsd # this is in my rc2007_gui package directory … … 69 70 return math.sqrt(e/len(x)) 70 71 72 # global sound card variables 73 audio_sampling_frequency = 16000 74 audio_channels = 1 75 audio_buffer_length = 1024 76 77 def CreateMetadataObject(): 78 modulation_scheme = SI.ModulationScheme(SI.ModulationScheme.PSK, 2) 79 80 packet_id = 0 81 sampling_frequency = 0.0 82 carrier_frequency = 0.0 83 signal_bandwidth = 0.0 84 signal_strength = 0.0 85 eom = True 86 default_metadata = SI.MetaData(modulation_scheme, 87 packet_id, 88 sampling_frequency, 89 carrier_frequency, 90 signal_bandwidth, 91 signal_strength, 92 eom) 93 return default_metadata 94 71 95 72 96 class txWorkClass: … … 80 104 81 105 # open the capture device and set properties 82 Fs = 16000# sampling frequency83 self.num_channels = 2106 Fs = audio_sampling_frequency # sampling frequency 107 self.num_channels = audio_channels 84 108 85 109 # open the playback device and set properties … … 90 114 91 115 92 self.buf_len = 512*2*self.num_channels116 self.buf_len = audio_buffer_length 93 117 94 118 self.voice_data_queue = [] … … 97 121 self.is_running = True 98 122 99 modulation_scheme = SI.ModulationScheme(SI.ModulationScheme.PSK, 2) 100 101 packet_id = 0 102 sampling_frequency = 0.0 103 carrier_frequency = 0.0 104 signal_bandwidth = 0.0 105 signal_strength = 0.0 106 eom = True 107 self.default_metadata = SI.MetaData(modulation_scheme, 108 packet_id, 109 sampling_frequency, 110 carrier_frequency, 111 signal_bandwidth, 112 signal_strength, 113 eom) 114 123 # create meta data objects for audio and text 124 self.audio_metadata = CreateMetadataObject() 125 self.text_metadata = CreateMetadataObject() 126 115 127 self.my_encoder = cvsd.encoder() 116 128 self.my_decoder = cvsd.decoder() … … 150 162 def SendTextData(self,text): 151 163 # TODO: pack/depack 152 metadata = self.default_metadata153 164 # tmp: False for text 154 165 # configure meta data here 155 metadata.eom = False 156 self.rc2007_gui_ref.to_radio_port_servant.send_data(text, metadata) 166 self.text_metadata.eom = False 167 self.text_metadata.packet_id += 1 168 #print "text " + str(self.text_metadata.packet_id) + " " + text 169 self.rc2007_gui_ref.to_radio_port_servant.send_data( 170 text, 171 copy.copy(self.text_metadata)) 157 172 158 173 def Release(self): … … 161 176 162 177 def Process(self): 163 metadata = self.default_metadata164 178 while self.is_running: 165 179 self.voice_data_signal.wait() # wait for data to be aded to the … … 175 189 # encode audio data using CVSD codec 176 190 data_int = self.my_encoder.Encode(data) 177 # convert integer data (0,1) to string 191 # pack integers into string 192 # NOTE: this does NOT mean that an integer zero is 193 # converted into an ASCII '0' character, but rather 194 # the '\x00' character 178 195 data = '' 179 196 for b in data_int: 180 data += str(b) 181 197 data += struct.pack('B', b); 198 # tmp: true for voice 199 # configure meta data here 200 self.audio_metadata.eom = True 201 self.audio_metadata.packet_id += 1 202 203 #print ">"*4 + " audio enc " + str(self.audio_metadata.packet_id) + \ 204 # " " + str(data_int[0:10]) 182 205 183 206 if self.rc2007_gui_ref.to_radio_port_active: 184 # tmp: true for voice185 # configure meta data here186 metadata.eom = True187 self.rc2007_gui_ref.to_radio_port_servant.send_data(data, metadata)207 #print "audio length: " + str(len(data)) 208 self.rc2007_gui_ref.to_radio_port_servant.send_data( 209 data, 210 copy.copy(self.audio_metadata)) 188 211 189 212 self.voice_data_signal.clear() # done reading the buffer … … 201 224 202 225 # new method: 203 self.num_channels = 2204 Fs = 16000226 self.num_channels = audio_channels 227 Fs = audio_sampling_frequency 205 228 self.speaker_driver = ossaudiodev.open('w') 206 229 self.speaker_driver.setfmt(ossaudiodev.AFMT_S16_LE) … … 319 342 data_int = [] 320 343 for c in data: 321 data_int.append(int(c)) 344 data_int.append( int(struct.unpack('B', c)[0]) ) 345 #print "<"*4 + " audio dec " + str(metadata.packet_id) + \ 346 # " " + str(data_int[0:10]) 347 322 348 self.CVSDDecode(data_int) 323 349 -
experimental/components/rc2007_gui/port_impl.py
r5508 r5511 43 43 44 44 def pushPacketMetaData(self, data, metadata): 45 #print "rx packet " + str(metadata.packet_id) + \ 46 # ", len = " + str(len(data)) + \ 47 # " voice? " + str(metadata.eom) 45 48 self.parent.rx_work_mod.AddMetaData(data, metadata) 46 49 … … 101 104 # send the data to all outPort connections 102 105 for port in self.outPorts.values(): 106 #print "tx packet " + str(metadata.packet_id) + \ 107 # ", len = " + str(len(data)) + \ 108 # " voice? " + str(metadata.eom) 103 109 port.pushPacketMetaData(data, metadata) 104 110