changeset:   1977:ff8811642690
tag:         aprs_settings
tag:         qbase
tag:         qtip
tag:         tip
user:        Sean Burford <sburford@google.com>
date:        Wed May 01 08:14:17 2013 +1000
summary:     [VX8] Add APRS settings menu

diff -r 35bd3e0c31b7 -r ff8811642690 chirp/vx8.py
--- a/chirp/vx8.py	Wed Apr 10 19:17:38 2013 -0700
+++ b/chirp/vx8.py	Wed May 01 08:14:17 2013 +1000
@@ -107,6 +107,143 @@
   u8 unknown7[3];
 } memory[900];
 
+#seekto 0xC0CA;
+struct {
+  u8 unknown0:6,
+     rx_baud:2;
+  u8 unknown1:4,
+     tx_delay:4;
+  u8 custom_symbol;
+  u8 unknown2;
+  struct {
+    char callsign[6];
+    u8 ssid;
+  } my_callsign;
+  u8 unknown3:4,
+     selected_position_comment:4;
+  u8 unknown4;
+  u8 set_time_manually:1,
+     auto_tx_beacon:1,
+     ring_beacon:1,
+     ring_msg:1,
+     aprs_mute:1,
+     unknown6:2,
+     af_dual:1;
+  u8 unknown7:1,
+     aprs_units_wind_mph:1,
+     aprs_units_rain_inch:1,
+     aprs_units_temperature_f:1
+     aprs_units_altitude_ft:1,
+     unknown8:1,
+     aprs_units_distance_m:1,
+     aprs_units_position_mmss:1;
+  u8 unknown9:6,
+     aprs_units_speed:2;
+  u8 unknown11:1,
+     filter_other:1,
+     filter_status:1,
+     filter_item:1,
+     filter_object:1,
+     filter_weather:1,
+     filter_position:1,
+     filter_mic_e:1;
+  u8 unknown12:2,
+     timezone:6;
+  u8 unknown13:4,
+     beacon_interval:4;
+  u8 unknown14;
+  u8 unknown15:7,
+     latitude_south:1;
+  u8 latitude_degree;
+  u8 latitude_minute;
+  u8 latitude_second;
+  u8 unknown16:7,
+     longitude_west:1;
+  u8 longitude_degree;
+  u8 longitude_minute;
+  u8 longitude_second;
+  u8 unknown17:4,
+     selected_position:4;
+  u8 unknown18;
+  u8 unknown19:6,
+     gps_units_altitude_ft:1,
+     gps_units_position_sss:1;
+  u8 unknown20:6,
+     gps_units_speed:2;
+  u8 unknown21[4];
+  struct {
+    struct {
+      char callsign[6];
+      u8 ssid;
+    } entry[8];
+  } digi_path_8;
+  u8 unknown22[2];
+  struct {
+    char msg_text[16];
+  } beacon_msg[7];
+  u8 unknown23:4,
+     selected_msg_group:4;
+  u8 unknown24;
+  struct {
+    char filter[9];
+  } msg_group[8];
+  u8 unknown25[26];
+  u8 unknown26:2,
+     flash_msg:6;
+  u8 unknown27:2,
+     flash_grp:6;
+  u8 unknown28:2,
+     flash_bln:6;
+  u8 selected_digi_path;
+  struct {
+    struct {
+      char callsign[6];
+      u8 ssid;
+    } entry[2];
+  } digi_path_5;
+  struct {
+    struct {
+      char callsign[6];
+      u8 ssid;
+    } entry[2];
+  } digi_path_6;
+  struct {
+    struct {
+      char callsign[6];
+      u8 ssid;
+    } entry[2];
+  } digi_path_7;
+  u8 unknown29[14];
+  u8 unknown30:6,
+     selected_my_symbol:2;
+} aprs_settings;
+
+#seekto 0x%04X;
+struct {
+  bbcd date[3];
+  u8 unknown1;
+  bbcd time[2];
+  u8 sequence;
+  u8 unknown2;
+  u8 sender_callsign[7];
+  u8 data_type;
+  u8 yeasu_data_type;
+  u8 unknown3;
+  u8 unknown4:1,
+     callsign_is_ascii:1,
+     unknown5:6;
+  u8 unknown6;
+  u16 pkt_len;
+  u16 in_use;
+} aprs_beacon_meta[%d];
+
+#seekto 0x%04X;
+struct {
+  u8 dst_callsign[7];
+  u8 src_callsign[7];
+  u8 path_and_body[%d];
+} aprs_beacon_pkt[%d];
+
 #seekto 0xFECA;
 u8 checksum;
 """
@@ -285,9 +422,14 @@
     _memsize = 65227
     _block_lengths = [ 10, 65217 ]
     _block_size = 32
+    _mem_params = (0xC24A, # APRS beacon metadata address.
+                   40,     # Number of beacons stored.
+                   0xC60A, # APRS beacon content address.
+                   194,    # Length of beacon data stored.
+                   40)     # Number of beacons stored.
 
     def process_mmap(self):
-        self._memobj = bitwise.parse(MEM_FORMAT, self._mmap)
+        self._memobj = bitwise.parse(MEM_FORMAT % self._mem_params, self._mmap)
 
     def get_features(self):
         rf = chirp_common.RadioFeatures()
@@ -405,4 +547,20 @@
 class VX8DRadio(VX8Radio):
     """Yaesu VX-8DR"""
     _model = "AH29D"
+    _mem_params = (0xC24A, # APRS beacon metadata address.
+                   50,     # Number of beacons stored.
+                   0xC6FA, # APRS beacon content address.
+                   146,    # Length of beacon data stored.
+                   50)     # Number of beacons stored.
     VARIANT = "DR"
+
+@directory.register
+class VX8GERadio(VX8Radio):
+    """Yaesu VX-8GE"""
+    _model = "AH041"
+    _mem_params = (0xC24A, # APRS beacon metadata address.
+                   50,     # Number of beacons stored.
+                   0xC6FA, # APRS beacon content address.
+                   146,    # Length of beacon data stored.
+                   50)     # Number of beacons stored.
+    VARIANT = "GE"
diff -r 35bd3e0c31b7 -r ff8811642690 tests/images/Yaesu_VX-8_DR.img
Binary file tests/images/Yaesu_VX-8_DR.img has changed

