<div dir="ltr">Hello, <br>I&#39;m new to Mercurial, but have been enjoying the fruits of your project for a while. I recently picked up a VX-8GR and noticed that not many settings were populated, so this is my first stab at adding some...<br>

<br>Ray<br><br># HG changeset patch<br># User Ray Cielencki &lt;<a href="mailto:rayslinky@gmail.com">rayslinky@gmail.com</a>&gt;<br># Date 1407084280 14400<br>#      Sun Aug 03 12:44:40 2014 -0400<br># Node ID de092ff89055726b65a355a2e8c8444f3fbb972b<br>

# Parent  73e127bbd9813b6cf966bdca1fefdc6c4ecac058<br>[vx8] New settings, from a VX-8GR<br><br>diff -r 73e127bbd981 -r de092ff89055 chirp/vx8.py<br>--- a/chirp/vx8.py    Tue Jul 22 19:31:33 2014 -0400<br>+++ b/chirp/vx8.py    Sun Aug 03 12:44:40 2014 -0400<br>

@@ -264,6 +264,27 @@<br>   char padded_string[60];<br> } aprs_beacon_status_txt[5];<br> <br>+#seekto 0x04bf;<br>+struct {<br>+  u8 beep; <br>+} beep_select;<br>+<br>+#seekto 0x047f;<br>+struct {<br>+  u8 flag;<br>+  u16 unknown;<br>

+  struct {<br>+    u8 padded_yaesu[16];<br>+  } message;<br>+} opening_message;<br>+<br>+#seekto 0x04da;<br>+struct {<br>+  u8 scan_restart;<br>+  u8 unknown;<br>+  u8 scan_resume;<br>+} scan_settings;<br>+<br> #seekto 0xFECA;<br>

 u8 checksum;<br> &quot;&quot;&quot;<br>@@ -650,6 +671,15 @@<br>               &quot;every 2 minutes&quot;, &quot;every 3 minutes&quot;, &quot;every 4 minutes&quot;,<br>               &quot;every 5 minutes&quot;, &quot;every 6 minutes&quot;, &quot;every 7 minutes&quot;,<br>

               &quot;every 8 minutes&quot;, &quot;every 9 minutes&quot;, &quot;every 10 minutes&quot;)<br>+    _BEEP_SELECT = (&quot;Off&quot;, &quot;Key+Scan&quot;, &quot;Key&quot;)<br>+    _OPENING_MESSAGE = (&quot;Off&quot;, &quot;DC&quot;, &quot;Message&quot;, &quot;Normal&quot;)<br>

+    _SCAN_RESUME = (&quot;2.0s&quot;, &quot;2.5s&quot;, &quot;3.0s&quot;, &quot;3.5s&quot;, &quot;4.0s&quot;, &quot;4.5s&quot;, &quot;5.0s&quot;,<br>+                    &quot;5.5s&quot;, &quot;6.0s&quot;, &quot;6.5s&quot;, &quot;7.0s&quot;, &quot;7.5s&quot;, &quot;8.0s&quot;, &quot;8.5s&quot;,<br>

+                    &quot;9.0s&quot;, &quot;9.5s&quot;, &quot;10.0s&quot;, &quot;Busy&quot;, &quot;Hold&quot;)<br>+    _SCAN_RESTART = (&quot;0.1s&quot;, &quot;0.2s&quot;, &quot;0.3s&quot;, &quot;0.4s&quot;, &quot;0.5s&quot;, &quot;0.6s&quot;, &quot;0.7s&quot;,<br>

+                     &quot;0.8s&quot;, &quot;0.9s&quot;, &quot;1.0s&quot;, &quot;1.5s&quot;, &quot;2.0s&quot;, &quot;2.5s&quot;, &quot;3.0s&quot;,<br>+                     &quot;3.5s&quot;, &quot;4.0s&quot;, &quot;4.5s&quot;, &quot;5.0s&quot;, &quot;5.5s&quot;, &quot;6.0s&quot;, &quot;6.5s&quot;,<br>

+                     &quot;7.0s&quot;, &quot;7.5s&quot;, &quot;8.0s&quot;, &quot;8.5s&quot;, &quot;9.0s&quot;, &quot;9.5s&quot;, &quot;10.0s&quot;)<br>     _MY_SYMBOL = (&quot;/[ Person&quot;, &quot;/b Bike&quot;, &quot;/&gt; Car&quot;, &quot;User selected&quot;)<br>

 <br>     def get_features(self):<br>@@ -1135,12 +1165,73 @@<br> <br>         return menu<br>  <br>+    def _get_beep_select(self):<br>+        menu = RadioSettingGroup(&quot;beep_select&quot;, &quot;Beep Select&quot;)<br>

+        beep_select = self._memobj.beep_select<br>+<br>+        val = RadioSettingValueList(<br>+            self._BEEP_SELECT,<br>+            self._BEEP_SELECT[beep_select.beep])<br>+        rs = RadioSetting(&quot;beep_select.beep&quot;, &quot;Beep Select&quot;,<br>

+                          val)<br>+        menu.append(rs)<br>+<br>+        return menu<br>+<br>+    def _get_scan_settings(self):<br>+        menu = RadioSettingGroup(&quot;scan_settings&quot;, &quot;Scan Settings&quot;)<br>

+        scan_settings = self._memobj.scan_settings<br>+<br>+        val = RadioSettingValueList(<br>+            self._SCAN_RESTART,<br>+            self._SCAN_RESTART[scan_settings.scan_restart])<br>+        rs = RadioSetting(&quot;scan_settings.scan_restart&quot;, &quot;Scan Restart&quot;,<br>

+                          val)<br>+        menu.append(rs)<br>+<br>+        val = RadioSettingValueList(<br>+            self._SCAN_RESUME,<br>+            self._SCAN_RESUME[scan_settings.scan_resume])<br>+        rs = RadioSetting(&quot;scan_settings.scan_resume&quot;, &quot;Scan Resume&quot;,<br>

+                          val)<br>+        menu.append(rs)<br>+<br>+        return menu<br>+<br>+    def _get_opening_message(self):<br>+        menu = RadioSettingGroup(&quot;opening_message&quot;, &quot;Opening Message&quot;)<br>

+        opening_message = self._memobj.opening_message<br>+<br>+        val = RadioSettingValueList(<br>+            self._OPENING_MESSAGE,<br>+            self._OPENING_MESSAGE[opening_message.flag])<br>+        rs = RadioSetting(&quot;opening_message.flag&quot;, &quot;Flag&quot;,<br>

+                          val)<br>+        menu.append(rs)<br>+<br>+        msg = &quot;&quot;<br>+        for i in opening_message.message.padded_yaesu:<br>+            if i == 0xFF:<br>+                break<br>+            msg += CHARSET[i &amp; 0x7F]<br>

+        val = RadioSettingValueString(0, 16, msg)<br>+        rs = RadioSetting(&quot;opening_message.message.padded_yaesu&quot;, &quot;Message&quot;, <br>+                          val)<br>+        rs.set_apply_callback(self.apply_ff_padded_yaesu, <br>

+                              opening_message.message)<br>+        menu.append(rs)<br>+<br>+        return menu<br>+<br>     def _get_settings(self):<br>         top = RadioSettingGroup(&quot;all&quot;, &quot;All Settings&quot;,<br>

                                 self._get_aprs_general_settings(),<br>                                 self._get_aprs_rx_settings(),<br>                                 self._get_aprs_tx_settings(),<br>-                                self._get_aprs_smartbeacon())<br>

+                                self._get_aprs_smartbeacon(),<br>+                                self._get_beep_select(),<br>+                                self._get_scan_settings(),<br>+                                self._get_opening_message())<br>

         return top<br> <br>     def get_settings(self):<br>@@ -1272,6 +1363,16 @@<br>                 print element.get_name()<br>                 raise<br> <br>+    def apply_ff_padded_yaesu(cls, setting, obj):<br>+        # FF pad yaesus custom string format.<br>

+        rawval = setting.value.get_value()<br>+        max_len = getattr(obj, &quot;padded_yaesu&quot;).size() / 8<br>+        rawval = str(rawval).rstrip()<br>+        val = [CHARSET.index(x) for x in rawval]<br>+        for x in range(len(val), max_len):<br>

+            val.append(0xFF)<br>+        setattr(obj, &quot;padded_yaesu&quot;, val)<br>+<br> @directory.register<br> class VX8GERadio(VX8DRadio):<br>     &quot;&quot;&quot;Yaesu VX-8GE&quot;&quot;&quot;<br><br></div>