Commit Graph

1064 Commits

Author SHA1 Message Date
Silvano Seva 16d750c55c Excluded announcement of time and date settings for devices without RTC 2022-10-31 08:41:31 +01:00
vk7js 438c224a2a Fixed announcement of initial digit when entering rx freq in VFO mode. It once worked but somehow got clobbered along the way. 2022-10-31 08:41:31 +01:00
Silvano Seva dd30c899df Added a 50ms startup delay to voiceprompts. This provides a workaround to fix cracking sounds when changing rtx parameters on MD-UV3x0. 2022-10-31 08:41:31 +01:00
Silvano Seva f24699f14e Fixed bug in M17 demodulator causing it to sometimes take more than 20ms to process a block of baseband samples when, in unlocked state, a valid syncword is searched. 2022-10-31 08:41:31 +01:00
Silvano Seva c6a40a9625 Ensure proper syncronization between codec2 decode thread and output stream when the former is started 2022-10-31 08:41:31 +01:00
Silvano Seva 0692bea269 Partial fix for speaker pop when a voiceprompt begins 2022-10-31 08:41:31 +01:00
Silvano Seva 5ee3a2e9f0 Reorganised codec_pushFrame and codec_popFrame functions for true non-blocking behaviour 2022-10-31 08:41:31 +01:00
Silvano Seva 9d021b7557 Fixed bug in M17 modulator and demodulator making them not releasing their audio paths on termination thus locking up the thread on M17 mode re-entering. 2022-10-31 08:41:31 +01:00
vk7js 12932db37c Refinement to last checkin: only clear function latch without beep for PTT, not for open squelch. 2022-10-31 08:41:31 +01:00
vk7js f61313638f Cancel function key latch if ptt is pressed (without playing the latch off beep). 2022-10-31 08:41:31 +01:00
vk7js 793a76d1ea When PTT is pressed, stop any voice prompt or beep in process. 2022-10-31 08:41:13 +01:00
Silvano Seva f9228ec23c Halved the additional output gain for MD3x0 radios inside codec2 module to avoid sound distortion when voice prompts are played. 2022-10-28 09:47:47 +02:00
Silvano Seva 71a15c2cfb Fixed bug in voice prompts audio path management causing no audio output in case of rapid key sequences. Improved managment of audio path release in voice prompts module. 2022-10-28 09:47:47 +02:00
Silvano Seva 2c1401de86 Moved voiceprompts audio management to audio path system 2022-10-28 09:47:47 +02:00
Silvano Seva 4411e0f3e8 Implemented audio path management API in GDx and Mod17 audio drivers, removed old audio management API 2022-10-28 09:47:47 +02:00
Silvano Seva 21481072e7 Moved audio management in M17 opmode handler to audio path system 2022-10-28 09:47:47 +02:00
Silvano Seva edf864337a Moved audio management in FM opmode handler to audio path system 2022-10-28 09:47:47 +02:00
Silvano Seva 3c65f8834a Added to radio driver interface two functions to enable and disable AF output towards the speaker 2022-10-28 09:47:47 +02:00
Silvano Seva 25caffde6b Linked audio path manager with low-level interface API to setup and release the audio paths. Minor refactoring of audio path manager code. 2022-10-28 09:47:47 +02:00
Silvano Seva 6d9ad2b947 Implementation of audio path manager 2022-10-28 09:47:47 +02:00
Silvano Seva a7521ccc5f Added functions to setup, release and check compatibility of audio paths to audio.h 2022-10-28 09:47:47 +02:00
Silvano Seva ad3390696e Moved audio_path header file from interfaces to core, moved enums of audio source, sink and priority to audio.h 2022-10-28 09:47:47 +02:00
vk7js ec6519425c Added call to vp_announceCTCSS to macro moni+2 branch because increasesto code were not speaking, only decreases. 2022-10-28 09:47:47 +02:00
Silvano Seva 5fb11322ac Code cleanup and refactoring of voice prompts code 2022-10-28 09:47:47 +02:00
vk7js c7c9c3afc5 Fixed issue of m17 destination not being spoken in summary (long hold f1) if set to broadcast. 2022-10-28 09:47:47 +02:00
vk7js 7cc287643e Added Broadcast to string table for use with voice prompts. Cleaned up hash key announcement. 2022-10-28 09:47:43 +02:00
vk7js 3ea4431b35 Added support for the speaking of callsign when you hit hash key.
Fixed issue of callsign and M17 settings strings being in the wrong order in the string table causing the voice prompts to be switched.
2022-10-28 08:30:47 +02:00
vk7js c2f349c93d More improvements to auto GPS screen readout
Read fix quality and type changes.
Read satellite count changes.
Reduced minimum time between readouts to 8 seconds.
say km/h instead of kmh  for speed.
2022-10-28 08:30:47 +02:00
vk7js cf45f7ee81 Fixed missing gps updates due to recording an update even when one wasn't detected, this meant countdown would restart errantly. 2022-10-28 08:30:47 +02:00
vk7js dbc86ea392 Give leeway for nw/ne/sw/se within a few degrees like n/e/s/w. 2022-10-28 08:30:47 +02:00
vk7js 8c9f034b93 Adjusted sensitivity of auto announcement for GPS data. Now only announce for altitude changes of at least 5m, speed changes of at least 1 KM/h and direction changes of at least 1 degree. 2022-10-28 08:30:47 +02:00
vk7js 7cc0c6455c Now better handle directions, and speak prior to other info as most important.
Handle 8 cardinal points north, east, south, west, north east, south east, south west and north west.
2022-10-28 08:30:47 +02:00
vk7js 4ba9b3ec34 Fixed memory overrun caused by buffer being too small.
Also fixed satellite count which got broken when I changed the GPS info flags to add more.
2022-10-28 08:30:47 +02:00
vk7js fbc4e380b3 Moved latitude and longitude to after direction in announcement because these are less meaningful than the other parameters. 2022-10-28 08:30:47 +02:00
vk7js f1639159bf fixed issue of auto announcement clobbering manual request for summary.
Fixed a couple of issues with direction announcement.
2022-10-28 08:30:47 +02:00
vk7js 4edef678c1 fixed south and west. 2022-10-28 08:30:47 +02:00
vk7js 4e1689df51 Cleaned up GPS direction info so we say north, east, south, west when the tmg is within a close enough range. 2022-10-28 08:30:47 +02:00
vk7js 5829df6dd3 Now read speed, altitude and direction changes on the GPS screen automatically with a forced minimum of 10 seconds between readings to avoid a bit of hysterisis .
Can still get full summary on long hold f1.
2022-10-28 08:30:47 +02:00
vk7js 3ba094f633 Minor cleanup of beep code. 2022-10-28 08:30:47 +02:00
vk7js 104f18d9e9 Added vp_beepSeries to play a melody.
Now play melody on power up if vp level set to Beep.
2022-10-28 08:30:47 +02:00
vk7js dc285ab023 Moved beep definitions into header beeps.h. 2022-10-28 08:30:47 +02:00
vk7js d8fa0465fb Fixed following bug:
1. hit enter to go to banks menu.
2. hit escape.
3. hit enter again and radio does not announce banks menu because it was the last menu active.
Now reset the menu tracking variables on Escape.
2022-10-28 08:30:47 +02:00
vk7js da7dfe63b2 Avoid calling beep if we know the voice will announce something since it will be
canceled and most likely generate an unwanted click.
2022-10-28 08:30:47 +02:00
vk7js 91d19e809e Fixed issue of menus not reading at vp level 1. 2022-10-28 08:30:47 +02:00
vk7js eb89f5a55a Now play generic beep on any key press as well as different tones when navigating the menu, when menu item wraps, and when function key latches and unlatches if voice prompt level is set to beep. 2022-10-28 08:30:47 +02:00
vk7js a1e302b19d Got beeps working so long as you don't have ctcss set.
Reduced durations to sensible values.
2022-10-28 08:30:47 +02:00
vk7js 3c20a5282e Fixed nasty popping between every voice prompt and after every silence.
When retrieving the codec2 data, ensure it is an exact multiple of codec2 frames and always discard the very last frame.
2022-10-28 08:30:47 +02:00
Silvano Seva 80f6fe2289 Stopping audio codec at the and of each voice prompt 2022-10-28 08:30:47 +02:00
vk7js 0298aa897b Implemented beeps on MD-UV3x0 platform driver. 2022-10-28 08:30:47 +02:00
vk7js 32fd910e64 Fixed warnings. 2022-10-28 08:30:47 +02:00
vk7js 70ba324ef3 Fixed menu announcements so that menu item names are always spoken. 2022-10-28 08:30:47 +02:00
vk7js b39ab4f0d5 Added "Used heap" to voice prompts for Info screen. 2022-10-28 08:30:47 +02:00
vk7js 6a56fe3d3a Fixed satellite count readout. 2022-10-28 08:30:47 +02:00
vk7js a71a06c57a 1. Renamed beepTick to beep_tick for consistency.
2. Made beep_tick static.
3. call beep_tick from top of vp_tick because in its prior location it might
not actually be called.
2022-10-28 08:30:47 +02:00
vk7js a081964ac8 Fixed Backup and Restore menus as follows:
1. Fixed issue of voice not reading backup or restore messages but instead
stuttering indefinitely.
2. Can now press cancel to exit the menu so long as you haven't pressed PTT to
start the process.
2022-10-28 08:30:47 +02:00
vk7js f8bfc7fb13 Added mechanism for specifying exactly what is read in the summary. 2022-10-28 08:30:47 +02:00
vk7js 495b721231 Fixed setting of CTCSS and tone so that one can rapidly change tone without hearing the word "tone", "receive tone," "transmit tone" etc prior to each tone value. 2022-10-28 08:30:47 +02:00
vk7js d622080cfe Do a better job of determining when to say Menu.
In info screen, avoid very rapid announcements of battery fluctuations.
For same menu name, only read value changes once per second for automatic reading.
2022-10-28 08:30:47 +02:00
vk7js c9ce41a999 Initial beep implementation.
Function latch will play high beep when latched and low beep when latch times out.
Menus will play a high beep when you arrow through them and a low beep when you reach the first item.
All keys should play a generic beep sound but this has not been implemented yet.
2022-10-28 08:30:46 +02:00
vk7js 95b7707d87 Implemented speech feedback for setting UTC timezone.
Added speaking of negative sign for vp_queueInteger (plus is assumed if not negative).
2022-10-28 08:30:46 +02:00
vk7js 9a250ec994 Added speech feedback to settings/display/timer menu. 2022-10-28 08:30:46 +02:00
vk7js 0138d843b1 Improved time/date entry:
1. Now give format as dd/mm/yy before date and hh:mm before time.
2. Say the slash immediately after the 2nd and 4th digits are entered in the date and the colon immediately after the 2nd digit of the time.
3. Removed speaking of the 2nd colon in the time since seconds input is disallowed.
2022-10-28 08:30:46 +02:00
Silvano Seva e5de5b96a3 Fixed announcement of power level both in settings menu and channel summary 2022-10-28 08:30:46 +02:00
vk7js 0452bd0f10 Added voice feedback for setting the time and date. 2022-10-28 08:30:46 +02:00
vk7js ac7a2b94a9 Adjusted vp_anounceBuffer to distinguish between a callsign buffer and a regular name buffer. 2022-10-28 08:30:46 +02:00
vk7js a1d782b16c Fixed backspacing text input so that it reads the char backspaced correctly. 2022-10-28 08:30:46 +02:00
vk7js 11132e4949 Speak original callsign if escape is pressed to cancel edit from m17settings edit mode. 2022-10-28 08:30:46 +02:00
vk7js c0eba3866e Added voice feedback for the M17 Settings Menu:
1. Added vp_announceBuffer to speak a prompt, edit mode and string buffer.
2. Added logic to the vp_announceScreen for m17Settings read-only mode.
3. Added logic for handling edit mode.
4. Removed vpCaps flag from several places because it is irrelevant when input only supports caps.
2022-10-28 08:30:46 +02:00
vk7js 579ce7baa5 Removed the word "banks" from channel summary since name of bank or "all channels" is sufficient by itself. 2022-10-28 08:30:46 +02:00
vk7js 5ed0121780 Fixed announcement of channel number/name in summary and when changing channel. 2022-10-28 08:30:46 +02:00
vk7js 30e8671044 If there is no GPS fix, do not announce lat, long, ... 2022-10-28 08:30:46 +02:00
vk7js 9f52c98c2f Removed unnecessary trailing zeros from lat/long announcement. 2022-10-28 08:30:46 +02:00
vk7js 2139f5e391 Refactored to add generic function for speaking int settings. Made brightness and contrast prompt use this. 2022-10-28 08:30:46 +02:00
vk7js 04e7f044ff Added announcement of Brightness when changing from the Settings/Display menu. 2022-10-28 08:30:46 +02:00
vk7js 1e87493183 When enter is pressed to change an item's value and edit mode is enabled, indicate this so that the user knows they can actually change the value.
Updated voiceprompts.vpc with edit prompt.
2022-10-28 08:30:46 +02:00
vk7js 52479d10b5 Minor cleanup
Added Accessibility menu name to string table for voice prompt announcement.
Removed unnecessary comment.
2022-10-28 08:30:46 +02:00
vk7js 9f5a45954d When GPS is disabled, and you choose the GPS menu item, announce GPS off rather than nothing. 2022-10-28 08:30:46 +02:00
vk7js 8cb9272881 Added vp_announceScreen to automatically announce informational screens such as VFO, channel, ... 2022-10-28 08:30:46 +02:00
Silvano Seva 158b38d113 Clearing buffer index and length of codec2 data when the reproduction of a voice prompt is completed 2022-10-28 08:30:46 +02:00
Silvano Seva cad026f902 Renamed vp_clearCurrPrompt() to vp_flush(), added a vp_stop() function allowing to stop an in-progress voice prompt but without flushing the data buffer 2022-10-28 08:30:46 +02:00
Silvano Seva d81a4220d1 Fixed voice prompt bugs
Fixed following voice prompt bugs:
1. Now say OpenRTX when powering on if vp enabled to let user know radio is on.
2. When switching back to VFO or channel mode from menus, now anounce VFO info or channel info.
3. When entering first digit of frequency in VFO input mode, say it.
4. Refixed issue of concatenating menus rather than clearing menu.
2022-10-28 08:30:46 +02:00
Silvano Seva 1383e3d61e Reset prompt buffer position to zero once VP had finished speaking so that another play would replay the buffer 2022-10-28 08:30:46 +02:00
Silvano Seva 99408a5455 Added function to announce generic on/off toggle settings. 2022-10-28 08:30:46 +02:00
Silvano Seva 33867ec009 Fixed speaking of voice prompt level when changing from the menu. 2022-10-28 08:30:46 +02:00
Silvano Seva 7a78ece920 Fixed announcement of ctcss tones, now the decimal point gets announced. 2022-10-28 08:30:46 +02:00
Silvano Seva a40cba2430 Added missing entry in VP table and fixed off-by-one for string table lookups. 2022-10-28 08:30:46 +02:00
Silvano Seva 10dcf04a92 Fixed concurrency issue inside audio codec module: after calling codec_stop() the codec resulted free before the effective shutdown of the internal thread, causing codec_decode() to lock inside the outputStream_start() in case of a fast sequence of decode - stop - decode 2022-10-28 08:30:46 +02:00
Silvano Seva d0d603901e Implemented storage of voice prompts data inside the binary executable image. Voice prompts data is placed in .rodata section at link time 2022-10-28 08:30:46 +02:00
Silvano Seva cf842306c2 Partially refactored UI code 2022-10-28 08:30:46 +02:00
Silvano Seva 42b262c437 Refactored voicePromptUtils.h and voicePromptUtils.c 2022-10-28 08:30:46 +02:00
Silvano Seva c5f109efa5 Refactored voicePrompts.c 2022-10-28 08:30:46 +02:00
Silvano Seva df5341e103 Refactored voicePrompts.h, aligned function names of voice prompt API to OpenRTX coding style 2022-10-28 08:30:46 +02:00
Silvano Seva 5840f459fa Renamed UIStrings.h/.c to ui_strings.h/.c and refactored their content 2022-10-28 08:30:46 +02:00
Niccolò Izzo 8eca684a7d Voice prompts bugfixes:
- added missing initialization of codec2 in voice prompts code
- discarding the voice prompt header as we only support 3200 bit rate
- fixed wrong offset in pick vpQueueStringTableEntry
- fixed bug in vpInit causing voiceprompts to hang
2022-10-28 08:30:46 +02:00
vk7js 5bb7fc96a8 Renamed a few variables for case consistency, reimplemented vpTick and call from same place as ui_updateFSM to continue playing voice prompts. 2022-10-28 08:30:46 +02:00
vk7js befc892068 When reading codec2 data, pad out to a multiple of 8 bytes with 0s so that when frames are pushed from the buffer, we don't get garbage at the ends of prompts which are not an exact multiple of 8 bytes. 2022-10-28 08:30:46 +02:00
vk7js 69b023dd4a First cut at implementation of vpPlay. 2022-10-28 08:30:46 +02:00
vk7js 6b83af622c Corrected vpDataOffset, now use ftell to obtain file offset after reading in header and toc. Added better verification that the TOC was actually read. 2022-10-28 08:30:46 +02:00
vk7js e09ce7e95a Added function implementation to read voiceprompts.vpc header, then read in the table of contents into ram, and then on request, read the codec2 data into the codec2 buffer given an offset and length into the data. 2022-10-28 08:30:46 +02:00
Niccolò Izzo 1f71789a9d Apply clang-format 2022-10-28 08:30:46 +02:00
vk7js 29de1d36d4 Added a couple of comments and added whitespace between a couple of functions. No code changes. 2022-10-28 08:30:46 +02:00
vk7js bec9ec0218 Added call to ReleaseFunctionLatchIfNeeded to status event branch of fsm so that the function latch will be released when needed without having to wait for a key press. 2022-10-28 08:30:46 +02:00
vk7js 9038745b6f extracted logic for testing if the function key is latched into its own function for readability. 2022-10-28 08:30:46 +02:00
vk7js bc7ce57f9b Reworked function latch. Now, the latch is silently released on the next key press event which is outside the timeout. 2022-10-28 08:30:46 +02:00
vk7js da935ff710 Added function menu latch.
1. If the moni key is long pressed by itself (no digit), function key latches.
2. It remains latched for 3 seconds.
3. If a subsequent key is pressed during this time, the timer is restarted at 3 seconds again, allowing the user to say increase the ctcss code while keeping the function latched.
4. If no key is pressed, the timer is allowed to lapse and the function unlatched.
2022-10-28 08:30:46 +02:00
vk7js 895a5ce780 Fixed error in AnnounceMenuIfNeeded, it was speaking the name twice rather than the name and value. 2022-10-28 08:30:46 +02:00
vk7js 611bd3d142 Fixed error in announceText(): wrong flags were passed to vpQueueString 2022-10-28 08:30:46 +02:00
vk7js d57700c607 removed old comment and unnecessary code. 2022-10-28 08:30:46 +02:00
vk7js 6e4af40346 hooked up warning messages. May need tweaking.
Msg may repeat on keyup.
2022-10-28 08:30:46 +02:00
vk7js 1f36e9b9d8 Added voice prompt to warn that during backup/restore no voice prompts will be available.
Note that this is stil not hooked up.
2022-10-28 08:30:46 +02:00
vk7js 7cd3f1d49a Added announceSettingsTimeDate and hooked up to f1 on that screen. 2022-10-28 08:30:46 +02:00
vk7js 29bde26f4f Added announceBackupScreen() and announceRestoreScreen() 2022-10-28 08:30:46 +02:00
vk7js b1c07e3d3f Added speech for About screen. 2022-10-28 08:30:46 +02:00
vk7js 8527b8a6ef Add GPS voiceprompts announcing
Removed flag parameters from summary and GPSInfo,
hooked up the GPS info so that if the GPS screen is active,
long hold f1 will read the GPS summary and f1 will repeat the last
voice prompt like on the VFO and channel screens.
2022-10-28 08:30:46 +02:00
vk7js c0371dad2a Added pauses between lots of info in summary for comprehensibility. 2022-10-28 08:30:46 +02:00
vk7js 46e3900462 corrected gps summary to use a stingized float for the compass bearing.
Also fixed another warning.
2022-10-28 08:30:46 +02:00
vk7js c24af62000 added more to GPS summary and fixed a couple of warnings. 2022-10-28 08:30:46 +02:00
vk7js 4b604e255f Added a few more voice prompts for the GPS screen: latitude, longitude, north, south, east,west, speed, altitude. 2022-10-28 08:30:46 +02:00
vk7js 0a4ed4009c Added announceGPSInfo so we can read something meaningful for the GPS screen (not yet hooked up). 2022-10-28 08:30:46 +02:00
vk7js c3667313ba Extracted announceM17Info logic to its own function. 2022-10-28 08:30:46 +02:00
vk7js 339131a5b7 Added M17 dst_addr to channel summary.
Added zone name to channel summary if called from memmory mode.
2022-10-28 08:30:46 +02:00
vk7js 74ab9cbbf6 Fixed voice menu, it will now display as: Voice off, Voice Beep, or Voice 1 through 3. 2022-10-28 08:30:46 +02:00
vk7js 206e827aeb Implement three levels of verbosity
Implemented the three levels of verbosity, besides none and beep:
1. Low: menus will speak but frequency and channel changes will just beep.
2. Medium: everything will speak but extra descriptions are eliminated except where ambiguity might occur.
3. High: Like medium except extra descriptions are spoken unles rapidly keying through menus in which case only the value will be spoken.
2022-10-28 08:30:46 +02:00
vk7js 16abf941d4 Added Voice menu to settings.
The Voice menu has two options:
Level: off, beep, level 1, level 2, level 3,
Phonetic: off, on.
2022-10-28 08:30:46 +02:00
vk7js 2102c15602 Hook up voice prompts in main startup routine
1. Call vpCacheInit() from the main startup routine.
2. If voice prompts are successfully loaded, and the hash key is held down, and the vp level is less than low, vp level is set to high.
3. If voice prompts are not loaded, and the level was set to something higher than beep, it is set to beep so that at a minimum, the user gets some beep feedback. If it was already set to off, nothing is changed.
2022-10-28 08:30:46 +02:00
vk7js 62ae110a19 Added more to the channel/vfo summary for M17 and DMR.
1. added contact name,
2. added timeslot and color code.
3. added new voice prompts.
2022-10-28 08:30:46 +02:00
vk7js 07d971ecfb Hooked up repeat last voice prompt and summary to f1 if vpLevel is higher than beep. 2022-10-28 08:30:46 +02:00
vk7js 8fab0b1e8c Added vpLevel and vpPhoneticSpell to settings.
These take up 4 bits with 4 bits reserved for on the fly voice rate.
Not yet hooked up to menus.
2022-10-28 08:30:46 +02:00
vk7js 50b29065ae Adjusted long comment to wrap. 2022-10-28 08:30:46 +02:00
vk7js a5985dd55d Added custom dictionary support for common words used in Channel names and contact names (ported from AccessibleGD77).
Added 9 custom word prompts. (One unused).
2022-10-28 08:30:46 +02:00
vk7js 537a20eef5 Add prompts for brightness and squelch
Added support for announcing macros for adjusting brightness and squelch.
Added voiceprompt for squelch.
2022-10-28 08:30:46 +02:00
vk7js e74eccfffd Added support for macro 6 announcing the cycling of radio mode. 2022-10-28 08:30:46 +02:00
vk7js d19e0d57ec Added bandwidth and power announcements
Added bandwidth and power announcement for both macro and summary.
Added new voice prompts for bandwidth and power.
2022-10-28 08:30:46 +02:00
vk7js 5a8044437c Added CTCSS tone announcement to channel/vfo summary. 2022-10-28 08:30:46 +02:00
vk7js 68926a72c4 Began work on the macros screen.
Toggling tone or enabling/disabling (macros 1 and 2) now supported.
Added new voice prompt for tone.
2022-10-28 08:30:46 +02:00
vk7js 4098baa5a8 When speaking a menu and its value, only speak the name if a prompt is not in progress. 2022-10-28 08:30:46 +02:00
vk7js 0ab179a701 use constant for string length for prior menu name and value.
Also reset prior value if name changes.
2022-10-28 08:30:46 +02:00
vk7js 0a410fe336 Speak only when values change
Changed the function which determines if we should speak the new menu
item to make it also check if a menu item's value changes.
2022-10-28 08:30:46 +02:00
vk7js 39cbfbe66f Added a function which will look up a string in our string table and, if found, returns its offset and use it in order to locate the equivalent voice prompt.
Added logic to see if the current menu index has changed.
Added a function to speak the current menu item and its value if the menu index changes.
2022-10-28 08:30:46 +02:00
vk7js e691f37f88 Extracted and added a few more strings to the string table and created voice prompts for those strings. 2022-10-28 08:30:46 +02:00
vk7js 46fab4642b Make VFO accessible through voice prompts
Added calls to various voice prompt functions in the UI so that VFO is basically accessible.
1. When entering digits in VFO mode.
2. When digits exceed 3, point will be announced.
3. When user enters sufficient digits to move from RX field to TX field, or if user presses Enter to move to TX field.
4. When both rx and tx frequencies have been completed.
2022-10-28 08:30:46 +02:00
vk7js af74978600 If voice prompts can't be loaded then set vpLevel to vpNone. 2022-10-28 08:30:46 +02:00
vk7js ad07a517bc Added voice prompt verbosity levels: off, beep, low, medium and high. 2022-10-28 08:30:46 +02:00
vk7js d68f01ffbc Insert voice prompt utility function in UI code
Began calling voice prompt utility functions from places such as:
1. arrowing up and down in VFO mode (read new frequencies)
2. up and down in memory mode: read new channel name.
3. up and down in VFO input mode: announce receive or transmit,
4. when starting to enter a frequency: announce receive and the first digit.
2022-10-28 08:30:46 +02:00
vk7js 27d1329ac7 Added a few prompts for M17 and DMR used on the UIMode screen but which do not need strings in the strings table as they are displayed in abbreviated form. 2022-10-28 08:30:46 +02:00
vk7js 2373d8374c more string extraction. moved prompt_fm and prompt_dmr to string table as they are needed by the UI. 2022-10-28 08:30:46 +02:00
vk7js fd5c5b4979 Got voice prompts code compiling. (certain blocks are commented out until we get codec2 decode figured out). 2022-10-28 08:30:46 +02:00
vk7js 901db10c87 Next round of changes to add literals to string table and voice prompt wordlists. 2022-10-28 08:30:46 +02:00
vk7js bc5289453e Round one of adding strings to string table and wordlists. 2022-10-28 08:30:46 +02:00
vk7js 10ddd88f69 Cleanup code to adhere more to coding standard.
Got it compiling.
2022-10-28 08:30:46 +02:00
vk7js c0a04c5564 Adding voicePromptUtils.h/c which will contain the actual functions which call the building blocks to speak radio functions. 2022-10-28 08:30:46 +02:00
vk7js cdda2a5b90 Added voice prompt for channel. 2022-10-28 08:30:46 +02:00
vk7js af76afb521 Added vpQueueFrequency to speak frequency with proper handling of decimal place and addition of MHz. 2022-10-28 08:30:46 +02:00
vk7js 88619dc682 Refactored symbol handling to clean up code. 2022-10-28 08:30:46 +02:00
vk7js 1d7432ae3b Reworked all symbols so that they can be processes via a lookup rather than by individual tests. Added more flags so we can optionally speak different categories of symbols. 2022-10-28 08:30:46 +02:00
vk7js d5568b8ab3 Adding voice prompts skeleton. 2022-10-28 08:30:46 +02:00
vk7js 7e660f2fe8 Starting to refactor UI to use a string table in preparation for adding voice prompt support. 2022-10-28 08:30:46 +02:00
Silvano Seva bf8a257c2b Implemented reference counting inside codec2 management module, allowing for multiple calls of codec_init() 2022-10-28 08:30:46 +02:00
Silvano Seva 44abedce4c Changed stack size of codec2 thread when running under linux to prevent stack smashing from codec2_decode. Stack size is set to the default value from the OS 2022-10-28 08:30:46 +02:00
Niccolò Izzo 58c1c3bbd6 Implemented circular buffer mode in linux output stream driver. 2022-10-28 08:30:46 +02:00
Niccolò Izzo b3a861a47c Usability improvements
Remove DMR from macro menu until we actually support it.
Remove print of M17 source callsign
Bank and channel visualization is more compact to make room for
additional data on a single screen.
Refactor mode screen to fit all data into a single screen.
2022-10-28 08:30:46 +02:00
tarxvf 37c9e0dbc3 macro menu mode change: catch invalid states 2022-10-18 14:07:48 +02:00
Niccolò Izzo 25d6c20ef0 Reorder macro menu functions
Swapped brightness and tone increase and decrease to be more intuitive.
2022-09-27 22:35:50 +02:00
Niccolò Izzo 5ff74aaaa7 Add FM tone decrease Macro
Reorganize macro menu buttons to enable tone decrease and eliminate
channel save as it was not yet implemented.
2022-09-27 22:35:50 +02:00
Niccolò Izzo d395afd370 Fix missing splashscreen
Fix a bug where the splashscreen was not showing on radios with GPS
enabled.
2022-09-27 22:35:50 +02:00
Niccolò Izzo 6a9ce50f6b Usability improvements
Remove DMR from macro menu until we actually support it.
Remove print of M17 source callsign
Bank and channel visualization is more compact to make room for
additional data on a single screen.
Refactor mode screen to fit all data into a single screen.
2022-09-27 22:35:50 +02:00
Silvano Seva 91d608cc6b Small reorganization of threads and tasks 2022-09-08 09:11:00 +02:00
Silvano Seva 94baec6981 Changed the granularity of VFO frequency input mode from tens to hundreds: this reduces the number of digits to be inserted to seven and avoids the line to overflow towards the bottom 2022-09-02 07:54:32 +02:00
Silvano Seva b5fc9b252d Moved code of compensating filter for MDx PWM-based DAC to a dedicated class. 2022-08-28 12:17:04 +02:00
Silvano Seva d11bb903b1 Made public the M17Modulator.stop() function, added macro to enable the transmission of an M17 EOT frame (disabled by default). 2022-08-28 12:00:36 +02:00
Jacob McSwain fa33f15417 Implemented M17 EOT marker 2022-08-28 11:59:31 +02:00
Silvano Seva a22aceb576 Reorganized code for M17 transmission: removed M17Transmitter class, use M17FrameEncoder to assemble LSF and data frames, modified API of M17Modulator class. 2022-08-28 11:59:31 +02:00
Silvano Seva 48cd81ee7c Changed to 'static' some variables inside UI module 2022-08-28 11:49:10 +02:00
Silvano Seva b26d783429 Small optimisation of UI management: perform an update and render of the graphics only when necessary 2022-08-28 11:49:03 +02:00
edgetriggered ea6863e077 UI: Add Ubuntu font license text 2022-08-15 08:17:44 +02:00
edgetriggered a5a0de1428 UI: Build time font selection 2022-08-15 08:17:37 +02:00
edgetriggered e24007b743 UI: Add additional font, Ubuntu Regular 2022-08-15 08:12:16 +02:00
Silvano Seva e2137eae23 Implemented CRC of persistent data (settings and VFO state) in MDx devices 2022-08-11 17:02:04 +02:00
Silvano Seva 84d66ca1b3 Changed parameters of ui_pushEvent(): now it accepts event type and payload instead of a single element, this cleans the code up a little bit 2022-08-10 18:05:02 +02:00
Silvano Seva f1dbfbfe1f Fixed compilation warnings 2022-08-04 22:22:56 +02:00
Silvano Seva 5ebdb36ffb Resetting M17 frame decoder when demodulator transitions from unlocked to locked state 2022-07-22 22:54:57 +02:00
Silvano Seva 9c2091c060 Changed M17 RX behaviour so that received stream data is forwarded to codec2 decode only when a full valid LSF is received. 2022-07-21 22:14:55 +02:00
Silvano Seva 54af6bf429 Made decode functions in M17Viterbi class return the final decode cost 2022-07-21 22:03:48 +02:00
Silvano Seva 1bb574c4fa Reorganised graphics module and moved graphics.h from interfaces to core folder 2022-07-18 21:30:43 +02:00
Silvano Seva 073440ef1a Removed unnecessary build dependencies when project is being configured for linux target 2022-07-18 18:48:26 +02:00
Alain Carlucci dea0ecbf29 fix double-free when codec_terminate is called multiple times 2022-07-17 22:28:03 +02:00
AlexandreRouma bb5891aca5 Fixed setPixel swapping red and blue 2022-07-11 15:54:17 +02:00
Silvano Seva 844e0619e2 Fixed bug in check for M17 phase inversion causing MD3x0 UHF not to demodulate the signal anymore 2022-07-11 15:35:59 +02:00
Silvano Seva eda835ee0b Tightened locking conditions for M17 demodulator: now lock is acquired only when there is an exact syncword match (zero hamming distance) 2022-07-11 10:37:58 +02:00
Silvano Seva fa58b99c9e Fixed text blink in settings restore menu 2022-07-11 10:09:18 +02:00
Silvano Seva 7e8a960001 Fixed compiler warnings on MD-UV3x0 and MD-9600 targets 2022-07-10 09:23:37 +02:00
tarxvf fc6849afb9 Fixed linux RTC driver to make it return UTC time instead of local one 2022-07-10 09:15:10 +02:00
tarxvf 111cb9e431 Fixed compiler warnings after signedness conversion of point_t 2022-07-10 09:14:41 +02:00
tarxvf ac3c8ea711 Renamed sat_t data structure to gpssat_t, changed signedness of point_t coordinates from unsigned to signed.
rename sat_t to gpssat_t to avoid future name collisions
allow signed values in point_t to allow relative values
fix crash when attempting to 'draw' negative absolute pixel values (like when zooming a map)
2022-07-10 09:13:47 +02:00
Silvano Seva 54aa794bf8 Changed file extension of all C++ only header files from .h to .hpp 2022-07-09 18:22:36 +02:00
Silvano Seva 34c90c2485 Moved FIR filter class to a dedicated header file 2022-07-09 18:07:42 +02:00
Silvano Seva 22ce4d6925 Moved codeplug initialisation from state init function to main initialisation sequence 2022-07-02 10:47:19 +02:00
Silvano Seva d39783af2f Moved libc implementation of CPS I/O interface to drivers folder 2022-07-02 10:47:19 +02:00
Silvano Seva 5f40ceceb3 Added field to state data structure containing the current operating state of the device. Implemented clean shutdown of all the threads. 2022-07-02 10:47:19 +02:00
Silvano Seva 810daf7599 Reorganised system initialisation sequence, improved reactivity of UI and device threads 2022-07-02 10:47:19 +02:00
Silvano Seva 3a288769ba Added the 'sleepUntil' API function to delays interface, allowing to put a thread in sleeping state until a certain absolute timepoint is reached 2022-07-02 10:47:19 +02:00
Silvano Seva 42569af38a Improved GPS management routine 2022-07-02 10:47:19 +02:00
Silvano Seva 23a1a38a3a Moved mutex for concurrent access to radio state inside state.h/.c, minimized the time spent with state mutex locked when updating the GPS data fields 2022-07-02 10:47:19 +02:00
Silvano Seva 101b33ce6b Merged keyboard and UI threads, merged GPS and device threads. 2022-07-02 10:47:18 +02:00
Silvano Seva 4528e102a2 Moved the UI event queue inside the UI engine itself, UI FSM update now becomes a periodic task 2022-07-02 10:28:28 +02:00
Silvano Seva fed368a4db Fixed routine computing the battery charge level so that the returned charge value cannot be greater than 100% 2022-07-02 10:28:28 +02:00
Silvano Seva 40337e7c97 Removed radio model name from UI info page 2022-07-02 10:28:28 +02:00
Silvano Seva 2fc89bf583 Renamed 'HAS_GPS' and 'HAS_RTC' to, respectively, 'GPS_PRESENT' and 'RTC_PRESENT' 2022-07-02 10:28:28 +02:00
Silvano Seva 6d10f52b5b Clean termination of all the threads on device shutdown 2022-07-02 10:28:28 +02:00
Silvano Seva bc0c80edf6 Displaying of current heap usage in info page 2022-07-02 10:28:28 +02:00
Silvano Seva 52ead401bd Reorganised GPS task to make it a non-blocking task to be called periodically 2022-07-02 10:28:28 +02:00
Silvano Seva d16eb04696 Reorganised data structures and functions to manage date and time 2022-07-02 10:28:28 +02:00
Silvano Seva 45d919f50f Reorganised GPS driver to allow for non-blocking acquisition of NMEA sentences 2022-07-02 10:28:28 +02:00
Silvano Seva 3cc5852ef3 Refactored keyboard thread by moving the keypad scan logic to a dedicated function inside input.h 2022-07-02 10:28:28 +02:00
Wojciech Kaczmarski f1b1dc2034 Changed battery type for Module17 to BAT_NONE 2022-06-21 12:06:20 +02:00
Jeff Gustafson 1f56018e52 Added space character to UI text input mode. 2022-06-17 12:15:00 +02:00
Wojciech Kaczmarski a5b7658878 Fixed bug causing the newline character to misalign text if "TEXT_ALIGN_CENTER" is used with multi-line strings. 2022-06-17 12:14:22 +02:00
Wojciech Kaczmarski e5fbb77cd2 Fixed displayed voltage error 2022-06-12 11:52:17 +02:00
Silvano Seva c966f82352 Fixed setting of battery voltage and transmission of PTT press signal from linux emulator shell 2022-06-09 23:02:38 +02:00
Silvano Seva 980fa32e73 Reorganised source code of linux emulator SDL engine 2022-06-09 22:48:41 +02:00
Silvano Seva d2e0b7d940 Improved heap memory management in M17 modulator class 2022-06-05 12:27:25 +02:00
Silvano Seva a1888ae19e Improved heap memory management in M17 demodulator class 2022-06-05 12:24:43 +02:00
Silvano Seva 8b5b6ed571 Moved OpenRTX startup code from main.c to dedicated openrtx_init() and openrtx_run() functions in a separate source file. 2022-06-02 10:01:34 +02:00
Silvano Seva 316e588bc3 Updated copyright headers 2022-06-02 09:56:05 +02:00
Niccolò Izzo 521865f489 Fix bug in new cps code
Fixed some bugs in the write and insert functions of the new cps format
functions, currently available only on libc implementations.
Add unit test to ensure that no regressions happen.

TG-428
2022-06-01 16:05:36 +02:00
Niccolò Izzo ae12a2126a Implement codeplug read and write functions
Implemented remaining codeplug functions to read, write and insert
codeplug entries. Fix bugs in ui code. Add unit tests.

TG-428
2022-06-01 16:05:35 +02:00
Niccolò Izzo dc250a25d6 Implement new codeplug interface
The new codeplug interface was implemented for linux and retrofitted to
all the existing OpenRTX platforms. Limited unit testing was also
implemented.

TG-428
2022-06-01 15:59:27 +02:00
Silvano Seva cbd3922325 Cleanup and reorganisation of state header file, new OpenRTX CPS data structure 2022-06-01 15:04:17 +02:00
Silvano Seva da22d6ff64 Separated interface for CPS loading from the non volatile memory one 2022-06-01 14:56:33 +02:00
Silvano Seva c3cfaba4b2 Renamed zones into banks to align to M17 codeplug naming convention. 2022-06-01 14:56:22 +02:00
Silvano Seva 7ed4a64027 On MD-3x0 added a fixed gain of four to codec2 demodulated audio to compensate for the low output volume 2022-05-31 21:28:09 +02:00
Silvano Seva 4367db53d0 Added configuration of AT1846S registers for digital modes in MD-UV3x0 driver. In M17 mode handler forced signal phase inversion at demodulator side also for MD-UV3x0 devices 2022-05-31 18:19:57 +02:00
Silvano Seva 4d4ebae2f3 Added configurable phase inversion to M17 demodulator. Forced enabling of phase inversion for MD3x0 VHF radios. 2022-05-30 19:19:01 +02:00
Silvano Seva bfa3494777 Fixed bug in M17 demodulator causing the M17Demodulator::getFrame() function to return the frame currently being processed instead of the fully demodulated one. 2022-05-27 21:49:33 +02:00
Silvano Seva 63f4c787c0 Moved helper functions for M17 Golay to a dedicated source file 2022-05-27 21:49:33 +02:00
Silvano Seva 1620889640 Reorganised main FSM inside M17 operating mode handler 2022-05-27 21:49:33 +02:00
Niccolò Izzo 6322cb49a4 Cleanup demodulator, improved quantization log
Unified offset and phase variable to reduce the chance of off-by-ones
between buffers. Improved logging on linux and module17 adding
quantization indices.

TG-81
2022-05-27 21:49:33 +02:00
Silvano Seva 46c988bdc2 Restoring priority level of output streams to PRIO_BEEP when the stream terminates, made M17Modulator::emitBaseband() wait for effective stream termination before returning when transmission stop is requested. Fixes #76 2022-05-27 21:49:33 +02:00
Silvano Seva 76be50db61 Improved debug log in M17 demodulator, changed trigger condition for log dump, re-enabled audio reproduction when logging. 2022-05-27 21:49:33 +02:00
Silvano Seva 4304013d62 Updated M17 demodulator debug logger: now log data is continously updated and dumped only in case of a missed sync after lock has been acquired. 2022-05-27 21:49:33 +02:00
Silvano Seva ff7a28ff59 RingBuffer class: implemented eraseElement() function, rewritten the pop() function in a cleaner way, fixed a bug in the pop() function causing the not_full condition variable to be never rised. 2022-05-27 21:49:33 +02:00
Niccolò Izzo 29ad0830f0 M17 demodulation improvement
Add logging in syncword sweep, fix unsigned underflow bug,
fixed symbol average computation for quantization.
Do syncword sweep whenever available.

TG-81
2022-05-27 21:49:33 +02:00
Silvano Seva d17d683b2d M17 code cleanup pass: reorganised data type definitions and constants 2022-05-27 21:49:33 +02:00
Silvano Seva 5b27e6b692 Ensure proper termination of baseband sampling when M17Demodulator::terminate() is called.
Solves #74.
2022-05-27 21:49:33 +02:00
Silvano Seva 7aff678069 Improved robustness of frame type detection, now based on minimum hamming distance between syncwords 2022-05-27 21:49:33 +02:00
Niccolò Izzo 115982d279 Add demod log script
Add script to receive the demodulated data from Module17/radio, to use
it you need to add in meson.build:12 the ENABLE_DEMOD_LOG define.
Build and flash into the platform, build and run scripts/get_demod_log,
turn on the radio, remember to turn of radio before you terminate
get_demod_log, print the output with
`scripts/plot_m17_demod_csv.py serial_demod_log.csv`.

TG-81
2022-05-27 21:49:32 +02:00
Niccolò Izzo c987848382 Add syncword hot re-sync fix DC removal
DC removal filter had a bug that created weird positive spikes on
Module17, add a syncword hot re-sync to be able to correct small phase
errors that appear every five seconds more or less.

TG-81
2022-05-27 21:48:47 +02:00
Silvano Seva 1f77c2af6c Reorganised logging inside M17 demodulator, logging is disabled by default.
On non-linux devices log data is printed on the serial port in raw binary format.
2022-05-27 21:48:47 +02:00
Silvano Seva 6be567a781 Implementation of a statically allocated ring buffer with blocking and non-blocking push and pop 2022-05-27 21:48:47 +02:00
Niccolò Izzo ef61c532a3 Cleaned up quantization average
Now average is computed over all the syncword symbols, for each syncword
as a simple average.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo 5fe5b0e578 Refactor M17 logging
Refactored logging functions to enable in-system logging on Module17 and
MDx radios.

TG-81
2022-05-27 21:48:47 +02:00
Silvano Seva 361308be16 Generator of pseudorandom binary sequence compliant with M17 specification 2022-05-27 21:48:47 +02:00
Silvano Seva 3988540b6c Changed coefficients for the 41-tap, 24kHz RRC filter to have unitary input-output gain 2022-05-27 21:48:47 +02:00
Niccolò Izzo c3c984d504 Add syncword fuzzy detection
Frame decoder now tolerates bit error in syncword, removed syncword type
detection in demodulator code.

TG-81
2022-05-27 21:48:47 +02:00
Silvano Seva b998d3b78f Modified time constant of DC removal high-pass filter to avoid a too high cut-off frequency when run with at fast sample rates 2022-05-27 21:48:47 +02:00
Silvano Seva 6b31a73f42 Corrected RRC gain and changed HR_C5000 modulation factor and input gain to have the correct 2.4kHz deviation when transmitting M17 with an MD3x0 radio 2022-05-27 21:48:47 +02:00
Niccolò Izzo b1f2cb109f Switch M17 Rx sample rate to 5SPS
Due to the RRC computation sometimes violating the timing constraints,
we switched the M17 demodulator to 5 samples per symbol (24KHz), thus
dividing the processing time by four ar the number of samples halves as
well as the number of taps of the RRC.
Minor adaptation on the code followed.

TG-81
2022-05-27 21:48:47 +02:00
Silvano Seva e68b05d859 Fixed double free errors in M17 code, see #73 2022-05-27 21:48:47 +02:00
Niccolò Izzo 2d59658d60 Switch M17 Rx sample rate to 5SPS
Due to the RRC computation sometimes violating the timing constraints,
we switched the M17 demodulator to 5 samples per symbol (24KHz), thus
dividing the processing time by four ar the number of samples halves as
well as the number of taps of the RRC.
Minor adaptation on the code followed.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo 63bd864674 Fix M17 Rx LED
Now LED turns on when a syncword is successfully detected, not just when
the correlation is sufficiently high.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo c4483edff0 Improve quantization strategy
Now quantization is performed by averaging syncword samples and dividing
the resulting threshold by a constant.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo 2e7ed7a8f0 M17 demodulator further improvements
- Fix phase propagation across buffers
- Fix initial syncword offset detection
- Improve quantization algorithm

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo 7d1b89550e Rewrite quantization algorithm
Quantization algorithm is now based on separate rolling averages for
positive and negative samples.
Merged csv outputs from syncword search and quantization on Linux.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo aa9fcc26b7 Remove useless DC bias in quantization
TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo d1651a702c Add proper DC-bias removal, tuned EMAs 2022-05-27 21:48:47 +02:00
Silvano Seva da5c453852 Implemented unpacking and decoding of M17 audio stream frames 2022-05-27 21:48:47 +02:00
Silvano Seva beca0d2acc Reorganised constants inside M17 demodulator class 2022-05-27 21:48:47 +02:00
Silvano Seva 77dfeef9e7 Implemented audio decoding functions in CODEC2 module 2022-05-27 21:48:47 +02:00
Silvano Seva fda0fed5e7 Moved constant specifying sample rate for M17 baseband decoding from hwconfig.h files to M17Demodulator class 2022-05-27 21:48:47 +02:00
Silvano Seva e5b5daba85 Moved state variables of PWM compensator and DC removal filter outside the function bodies to allow keeping their consistency among function calls 2022-05-27 21:48:47 +02:00
Mathis Schmieder 89c05a7332 Adjusted Module17 mic processing gain; interim-fix for DC offset removal 2022-05-27 21:48:47 +02:00
Silvano Seva 49e5486ea6 Parametric mic gain inside codec2 module 2022-05-27 21:48:47 +02:00
Silvano Seva b144657257 Moved CODEC2 management to a dedicated module 2022-05-27 21:48:47 +02:00
Silvano Seva 4b8685b853 Changed gain and added an offset at tx RRC stage only for Module 17 to compensate for an hardware bug 2022-05-27 21:48:47 +02:00
Silvano Seva 4a3e31cd03 Fixed bug in M17 demodulator caused by the precedent code refactoring 2022-05-27 21:48:47 +02:00
Silvano Seva d1b4973cc9 Fixed reset of DC bias on stream stop in Module 17 output stream driver, made parametric the gain of the RRC at modulator side 2022-05-27 21:48:47 +02:00
Silvano Seva 83020d4fa3 Increased priority of CODEC2 thread, this fixes glitches when generating M17 baseband signal 2022-05-27 21:48:47 +02:00
Silvano Seva 3d169484e9 Improved management of CODEC2 thread in M17 mode handler, now activated only when transmitting. Fixes a confict with RTX and MIC input streams causing the rtx thread to hang when PTT was pressed 2022-05-27 21:48:47 +02:00
Silvano Seva 54a89abcd0 Removed a printf left behind after debugging from M17 demodulator class and slightly cleaned up the code 2022-05-27 21:48:47 +02:00
Silvano Seva c9a4bfb199 Cleanup and refactoring of M17 modulator class, now using output streams for baseband signal output 2022-05-27 21:48:47 +02:00
Silvano Seva 0df1dc4f7e Extended output stream API to support also circular double-buffered mode, implemented output stream driver for MDx 2022-05-27 21:48:47 +02:00
Silvano Seva 5c90c19bea Data conversion utilities 2022-05-27 21:48:47 +02:00
Silvano Seva 7891288030 Fixed compilation warnings generated by graphics.cpp 2022-05-27 21:48:47 +02:00
Silvano Seva 427c5f50b3 Made M17Demodulator::update() return a boolean indicating when a new decoded frame is ready 2022-05-27 21:48:47 +02:00
Niccolò Izzo 77aead675a Improve runtime performance of M17 Demodulator
Tweaked the exponential moving average alpha factors to improve the
reactivity of the M17 demodulator.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo 5ef145cd39 Add fuzzy syncword validation
Now syncword match is not exact but can tolerate up to two erroneous
bits.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo ca49b306b9 Update constants for M17 demodulation
Constants were updated to increase performance based on baseband sample
collected with Module17.

TG-81
2022-05-27 21:48:47 +02:00
Niccolò Izzo 2d8c696a09 Complete M17 demodulator implementation
Make quantization work also on DC offset signal
Add samples plot code
Fix bug in buffer wrap around
Fix oob memory access in M17 modulator
Update tests with DC offset signal
Switch to 48KHz sample rate for Module17 and MD380
Add DC biasing script

TG-81
2022-05-27 21:48:46 +02:00
Niccolò Izzo f9c23452bc Add plotting function to graphics library
Added plotting function to graphics library which is native C++, so
refactored the graphics source file to allow that, consequently adapted
the hwconfig header files to be included also in C++ sources.
Propagated compile flags also to C++ sources, including asan what was
previously disabled for C++ compilation units.

TG-81
2022-05-27 21:48:46 +02:00
Niccolò Izzo ae26cca46f Remove SPS
Now M17_SAPLES_PER_SYMBOL is computed dinamically from sample rate.

TG-81
2022-05-27 21:48:46 +02:00
Niccolò Izzo a091bca35f M17 Demodulator bugfixes
Fixed several bugs in the M17 Demodulator code.

TG-81
2022-05-27 21:48:46 +02:00
Silvano Seva d2c7be9cc8 Fixed bug affecting LSF reassembling from LICH segments inside M17 frame decoder class 2022-05-27 21:48:46 +02:00
Silvano Seva 35c1f062c6 Implementation of M17 frame encoder 2022-05-27 21:48:46 +02:00
Silvano Seva 82dd0a63f1 Clarification of naming: renamed DATA_SYNC_WORD to STREAM_SYNC_WORD and Audio_puncture to DATA_PUNCTURE 2022-05-27 21:48:46 +02:00
Silvano Seva 25087b0e02 Removed BUF_CIRC from the possible buffer management modes for an input audio stream 2022-05-27 21:48:46 +02:00
Silvano Seva 5fbd39959c Implementation of M17 frame decoder 2022-05-27 21:48:46 +02:00
Silvano Seva 49bd8ee2f4 Reorganised internal structure of M17LinkSetupFrame class, renamed M17Frame to M17StreamFrame and reorganised its structure 2022-05-27 21:48:46 +02:00
Silvano Seva c73aa92305 Reorganised M17LinkSetupframe and M17Frame classes, encapsulating structs defining their internal data structure 2022-05-27 21:48:46 +02:00
Silvano Seva 8f63d349a2 Temporarily deactivating M17 demodulator until fully debugged as it makes the radio crash 2022-05-27 21:48:46 +02:00
Niccolò Izzo 7a9bbfcaf2 Demodulator bugfix
Fix several bugs in the demodulator code, tipycally sign errors.
2022-05-27 21:48:46 +02:00