[chirp_devel] IC-P7 .ICF format
SASANO Takayoshi
Mon Mar 20 02:54:29 PDT 2017
Hello,
Recently I bought ICOM's IC-P7 transceiver and CS-P7 software.
I want to use CHIRP with this rig and I tried to analyze .ICF file.
I am not familiar with Python (because I was C programmer),
so I write the result here for developer's help.
- - - - - - - -
*** memory layout
0x0000 memory settings (1251 channels, 21bytes/channel)
ch #0~999 normal memory ch.0~999
ch #1000~1049 Prog.scan edge 00A, 00B ... 24A, 24B
ch #1050~1249 auto write (?)
ch #1250 CALL0
ch #1251 CALL1
0x6922 skip flag (bitmap, 1056 bits) (ch #0~1049)
0x69a6 pskip flag (bitmap, 1056 bits) (ch #0~1049)
bit position = byte[(ch# / 8)] & (1 << (ch# % 8))
skip pskip
0 0 off
1 0 skip
1 1 pskip
0 1 unknown
0x6b1e memory bank settings
{uint8_t bank_group (0x00~0x11, 0xff: unused)
uint8_t bank_index (0x00~0x63) } x 1050 channels
0x7352 bank name
{char bank_name[6]} x 18 entries
*** channel entry
21bytes/channel, all values are little-endian.
{uint32_t freq
uint32_t offset
uint16_t train_sql
uint16_t tone_setting
uint16_t dtcs_mode
uint8_t dtcs_polarity
uint8_t name[6]}
freq and offset:
Values are specified in 1/3Hz.
i.e. 3000000(0x002dc6c0) means 1.0MHz.
freq range is 0.495~999.99MHz and offset is 0~159.995MHz.
train_sql:
bit[15:14]
00 Train SQL: off
01 Train SQL: tone eliminate (use bit[8:0])
10 Train SQL: MSK
bit[13:11]
000 no tone
001 Tone enable
010 TSQL enable
100 DTCS enable
bit[10:9]
00 duplex: off
01 duplex: on (-)
10 duplex: on (+)
bit[8:0]
Train SQL tone frequency (300~3000Hz)
the value is specified in 10Hz.
For example: 228(0xe4) means 2280Hz.
- In Japan, train radio sends simple tone or MSK signal
when no conversation. Train SQL suppress these tone/signal
to listen easy.
tone_setting:
bit[15:12]
0000 TS: 5.0kHz
0001 TS: 6.25kHz
0010 TS: 8.33kHz
0011 TS: 9.0kHz
0100 TS: 10.0kHz
0101 TS: 12.5kHz
0110 TS: 15.0kHz
0111 TS: 20.0kHz
1000 TS: 25.0kHz
1001 TS: 30.0kHz
1010 TS: 50.0kHz
1011 TS: 100.0kHz
1100 TS: 200.0kHz
1101 TS: Auto
bit[11:6]
000000 TSQL tone: 67.0Hz
000001 TSQL tone: 69.3Hz
000010 TSQL tone: 71.9Hz
:
101111 TSQL tone: 241.8Hz
110000 TSQL tone: 250.3Hz
110001 TSQL tone: 254.1Hz
bit[5:0]
CTCSS tone, format is same as TSQL tone
dtcs_mode:
bit[15:9]
unknown, '0000000'
bit[8:7]
00 mode: FM
01 mode: WFM
10 mode: AM
11 mode: Auto
bit[6:0]
000000 DTCS code: 023
000001 DTCS code: 025
000010 DTCS code: 026
:
110101 DTCS code: 734
110110 DTCS code: 743
110111 DTCS code: 754
dtcs_polarity:
bit[7:2]
unknown, '111111'
bit[1:0]
00 DTCS polarity: Both-N
01 DTCS polarity: TN-RR
10 DTCS polarity: TR-RN
11 DTCS polarity: Both-R
- When channel entry is empty, these values are set:
freq 0x3a98 (499.5kHz)
offset 0x1c9bfd68 (159.995MHz)
train_sql 0xffff
tone_setting 0xffff
dtcs_mode 0x03ff
dtcs_polarity 0xff
name {0x20, 0x20, 0x20, 0x20, 0x20, 0x20}
skip and pskip "11"
- - - - - - - -
.ICF contains current rig status such as VFO frequency, power (Lo/Hi),
beep volume and so on, but I don't check yet because these are not
fundamental.
And some stuff:
_model = "\x28\x69\x00\x01"
The first line of .ICF and CHIRP's message says
"ERROR: Unknown radio type 28690001" same code.
_memsize = 0x7500
_endframe = "Icom Inc\x2e\x41\x38"
What does \x41\x38 means? Is there any reason
not to simply use "Icom Inc." ??
Regards,
--
SASANO Takayoshi (JG1UAA) <uaa at mx5.nisiq.net>
More information about the chirp_devel
mailing list