[chirp_devel] [PATCH] This is the latest experimential version for the TYT-TH9000D radio driver
David Fannin
Fri Apr 24 19:15:26 PDT 2015
Thanks, I'll make the changes this weekend and repost.
For the auto file identification, I was going to try looking at the
frequency ranges in the image file for identification. These are
non-overlapping between the three models, and they are in a fixed location
in the image file. Eg. The 144 mhz models has a settable tx/rx range
between 132 and 152 Mhz (or close to this), the 220 Mhz model has 200-250
mhz, etc.
The file sizes are the same, AFAIK, for all three, so I can't use that
approach. The image files don't have a consistent or usable "id string" to
help identity them ( I did a od/hex dump and reviewed what's there), at
least for the two radios ( 2 meter and 220 mhz models) that I have.
Dave
On Fri, Apr 24, 2015 at 4:45 PM, Dan Smith <dsmith at danplanet.com> wrote:
> > All previous features are currently working for this patch, with the
> > exception of automatic file identifcation. The TH radios do not have
> > a identifer that can safely distingush between the radios, this
> > feature is still TBD. You will need to manually select the correct
> > model when you open a radio image file.
>
> None of the other drivers have this problem right now, so I'd hate to
> add one that does. Many of our drivers detect by file size. Is this not
> possible with this driver for some reason?
>
> > diff -r 31a7494c324a -r d5eee1cd5418 chirp/drivers/th9000.py
> > --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> > +++ b/chirp/drivers/th9000.py Sat Apr 18 22:02:22 2015 -0700
> > @@ -0,0 +1,882 @@
> > +# Copyright 2012 Dan Smith <dsmith at danplanet.com>
>
> This should be your copyright, with a proper date.
>
> > +#from chirp.settings import RadioSetting, RadioSettingGroup, \
> > +# RadioSettingValueInteger, RadioSettingValueList, \
> > +# RadioSettingValueBoolean, RadioSettingValueString, \
> > +# RadioSettingValueFloat, InvalidValueError
>
> Please don't do this. Remove these lines if you don't need them.
>
> > +# Chirp Driver for TYT TH-9000D Radio (2 meter, 1.25 and 70cm radios)
> > +# by David Fannin <dfannin at sushisoft.com>, KK6DF
>
> The copyright, when fixed, should cover this so you can drop it.
>
> > +#
> > +# Version 0.5 (Experimental - Known Bugs and Issues)
> > +# Use for development purposes only!
> > +# Features working:
> > +# - single class file for 3 radio types - 144, 220 and 440 mhz
> models)
> > +# - Download from Radio
> > +# - Display Memories (only None, Tone, TSQL signalling
> supported)
> > +# - Save image file
> > +# - memory map decoded (about 90%)
> > +# - Upload to radio
> > +# - Modification of memories
> > +# - feature settings
> > +# - added Startup ID label
> > +#
> > +# Features not working:
> > +# - DCS , Cross Signaling
> > +# - Skip channels
>
> I don't think you need to put all this in the driver, except for maybe
> the known issues.
>
> Also, the "use for development only" means I shouldn't put this in the
> tree, even if the other issues were addressed, is that right?
>
> > +SETTING_LISTS = {
> > + "auto_power_off": APO_LIST,
> > + "bg_color" : BGCOLOR_LIST,
> > + "bg_brightness" : BGBRIGHT_LIST,
> > + "squelch" : SQUELCH_LIST,
> > + "timeout_timer" : TIMEOUT_LIST,
> > + "choose_tx_power": TXPWR_LIST,
> > + "tbst_freq" : TBSTFREQ_LIST,
> > + "voice_prompt" : BEEP_LIST
> > +}
> > +
> > +
> > +#
> > +#
> > +#
>
> I think you can drop these three blank(ish) lines :)
>
> > +"""
> > +Overall Memory Map:
> > +
> > + Memory Map (Range 0x0100-3FF0, step 0x10):
> > +
> > + Field Start End Size
> > + (hex) (hex) (hex)
> > +
> > + 1 Channel Set Flag 0100 011F 20
> > + 2 Channel Skip Flag 0120 013F 20
> > + 3 Blank/Unknown 0140 01EF B0
> > + 4 Unknown 01F0 01FF 10
> > + 5 TX/RX Range 0200 020F 10
> > + 6 Bootup Passwd 0210 021F 10
> > + 7 Options, Radio 0220 023F 20
> > + 8 Unknown 0240 019F
> > + 8B Startup Label 03E0 03E7 07
> > + 9 Channel Bank 2000 38FF 1900
> > + Channel 000 2000 201F 20
> > + Channel 001 2020 202F 20
> > + ...
> > + Channel 199 38E0 38FF 20
> > + 10 Blank/Unknown 3900 3FFF 6FF 14592 16383 1792
> > + Total Map Size 16128 (2^8 = 16384)
> > +
> > +
> > +"""
> > +
> > +"""
> > + TH9000/220 memory map
> > + section: 1 and 2: Channel Set/Skip Flags
> > +
> > + Channel Set (starts 0x100) : Channel Set bit is value 0 if a
> memory location in the channel bank is active.
> > + Channel Skip (starts 0x120): Channel Skip bit is value 0 if a
> memory location in the channel bank is active.
> > +
> > + Both flag maps are a total 24 bytes in length, aligned on 32 byte
> records.
> > + bit = 0 channel set/no skip, 1 is channel not set/skip
> > +
> > + to index a channel:
> > + cbyte = channel / 8 ;
> > + cbit = channel % 8 ;
> > + setflag = csetflag[cbyte].c[cbit] ;
> > + skipflag = cskipflag[cbyte].c[cbit] ;
> > +
> > + channel range is 0-199, range is 32 bytes (last 7 unknown)
> > +"""
>
> Like Tom said, these should be comments, not strings.
>
> > +"""
> > + TH9000/220 memory map
> > + section: 5 TX/RX Range
> > + used to set the TX/RX range of the radio (e.g. 222-228Mhz for 220
> meter)
> > + possible to set range to 220-260Mhz for tx/rx
> > +
> > +"""
>
> This too.
>
> > +"""
> > + TH9000/220 memory map
> > + section: 6 bootup_passwd
> > + used to set bootup passwd (see boot_passwd checkbox option)
> > +
> > + options - bootup password
> > +
> > + bytes:bit type description
> > +
> ---------------------------------------------------------------------------
> > + 6 u8 bootup_passwd[6] bootup passwd, 6 chars, numberic
> chars 30-39 , see boot_passwd checkbox to set
> > + 10 u8 unknown;
> > +
> > +"""
>
> And this.
>
> > +"""
> > + TH9000/220 memory map
> > + section: 7 Radio Options
> > + used to set a number of radio options
> > +
> > + bytes:bit type description
> > +
> ---------------------------------------------------------------------------
> > + 1 u8 display_mode display mode, range 0-2,
> 0=freq,1=channel,2=name (selecting name affects vfo_mr)
> > + 1 u8 vfo_mr; vfo_mr , 0=vfo, mr=1
> > + 1 u8 unknown;
> > + 1 u8 squelch; squelch level, range 0-19, hex for menu
> > + 1 u8 unknown[2];
> > + 1 u8 channel_lock; if display_mode[channel] selected, then
> lock=1,no lock =0
> > + 1 u8 unknown;
> > + 1 u8 bg_brightness ; background brightness, range 0-21, hex,
> menu index
> > + 1 u8 unknown;
> > + 1 u8 bg_color ; bg color, menu index, blue 0 , orange
> 1, purple 2
> > + 1 u8 tbst_freq ; tbst freq , menu 0 = 1750Hz, 1=2100 ,
> 2=1000 , 3=1450hz
> > + 1 u8 timeout_timer; timeout timer, hex, value = minutes, 0=
> no timeout
> > + 1 u8 unknown;
> > + 1 u8 auto_power_off; auto power off, range 0-3, off,30min,
> 1hr, 2hr, hex menu index
> > + 1 u8 voice_prompt; voice prompt, value 0,1 , Beep ON = 1,
> Beep Off = 2
> > +
> > + description of function setup options, starting at 0x0230
> > +
> > + bytes:bit type description
> > +
> ---------------------------------------------------------------------------
> > + 1 u8 // 0
> > + :4 unknown:6
> > + :1 elim_sql_tail:1 eliminate squelsh tail when no ctcss
> checkbox (1=checked)
> > + :1 sql_key_function "squelch off" 1 , "squelch momentary off"
> 0 , menu index
> > + 2 u8 unknown[2] /1-2
> > + 1 u8 // 3
> > + :4 unknown:4
> > + :1 inhibit_init_ops:1 //bit 5
> > + :1 unknownD:1
> > + :1 inhibit_setup_bg_chk:1 //bit 7
> > + :1 unknown:1
> > + 1 u8 tail_elim_type menu , (off=0,120=1,180=2), // 4
> > + 1 u8 choose_tx_power menu , (60w=0,25w=1) // 5
> > + 2 u8 unknown[2]; // 6-7
> > + 1 u8 bootup_passwd_flag checkbox 1=on, 0=off // 8
> > + 7 u8 unknown[7]; // 9-F
> > +
> > +"""
>
> Also this.
>
> > +"""
> > + TH9000/220 memory map
> > + section: 8B Startup Label
> > +
> > + bytes:bit type description
> > +
> ---------------------------------------------------------------------------
> > + 7 char start_label[7] label displayed at startup (usually your
> call sign)
> > +"""
>
> Yep, this too.
>
> > +"""
> > + TH9000/220 memory map
> > + section: 9 Channel Bank
> > + description of channel bank (200 channels , range 0-199)
> > + Each 32 Byte (0x20 hex) record:
> > + bytes:bit type description
> > +
> ---------------------------------------------------------------------------
> > + 4 bbcd freq[4] receive frequency in packed binary
> coded decimal
> > + 4 bbcd offset[4] transmit offset in packed binary coded
> decimal (note: plus/minus direction set by 'duplex' field)
> > + 1 u8
> > + :4 unknown:4
> > + :4 tuning_step:4 tuning step, menu index value from 0-9
> > + 5,6.25,8.33,10,12.5,15,20,25,30,50
> > + 1 u8
> > + :4 unknown:4 not yet decoded, used for DCS coding?
> > + :2 channel_width:2 channel spacing, menu index value from
> 0-3
> > + 25,20,12.5
> > + :1 reverse:1 reverse flag, 0=off, 1=on (reverses tx
> and rx freqs)
> > + :1 txoff:1 transmitt off flag, 0=transmit , 1=do
> not transmit
> > + 1 u8
> > + :1 talkaround:1 talkaround flag, 0=off, 1=on (bypasses
> repeater)
> > + :1 compander:1 compander flag, 0=off, 1=on (turns
> on/off voice compander option)
> > + :2 unknown:2
> > + :2 power:2 tx power setting, value range 0-2,
> 0=hi,1=med,2=lo
> > + :2 duplex:2 duplex settings, 0=simplex,2= minus(-)
> offset, 3= plus (+) offset (see offset field)
> > +
> > + 1 u8
> > + :4 unknown:4
> > + :2 rxtmode:2 rx tone mode, value range 0-2, 0=none,
> 1=CTCSS, 2=DCS (ctcss tone in field rxtone)
> > + :2 txtmode:2 tx tone mode, value range 0-2, 0=none,
> 1=CTCSS, 3=DCS (ctcss tone in field txtone)
> > + 1 u8
> > + :2 unknown:2
> > + :6 txtone:6 tx ctcss tone, menu index
> > + 1 u8
> > + :2 unknown:2
> > + :6 rxtone:6 rx ctcss tone, menu index
> > + 1 u8 txcode ?, not used for ctcss
> > + 1 u8 rxcode ?, not used for ctcss
> > + 3 u8 unknown[3]
> > + 7 char name[7] 7 byte char string for channel name
> > + 1 u8
> > + :6 unknown:6,
> > + :2 busychannellockout:2 busy channel lockout option , 0=off,
> 1=repeater, 2=busy (lock out tx if channel busy)
> > + 4 u8 unknownI[4];
> > + 1 u8
> > + :7 unknown:7
> > + :1 scrambler:1 scrambler flag, 0=off, 1=on (turns on
> tyt scrambler option)
> > +"""
>
> You guessed it, this as well ;)
>
> I'd like to see the above fixed up on the next revision. From the looks
> of it, this is more than just ready for development purposes. I think
> functionally, it's probably fine for testing with a wider audience,
> especially since you've got the runtime experimental warning bit.
>
> Thanks!
>
> --Dan
>
>
> _______________________________________________
> chirp_devel mailing list
> chirp_devel at intrepid.danplanet.com
> http://intrepid.danplanet.com/mailman/listinfo/chirp_devel
> Developer docs: http://chirp.danplanet.com/projects/chirp/wiki/Developers
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://intrepid.danplanet.com/pipermail/chirp_devel/attachments/20150424/8e060f63/attachment-0001.html
More information about the chirp_devel
mailing list