import serial
import time
print("Icom IC-H11 programming script")

h11ser = serial.Serial('COM10', 1200, serial.EIGHTBITS, serial.PARITY_MARK, serial.STOPBITS_TWO)

channelpacket1 = bytearray(b'\xFE\x05\x01\x01\x00\xFD\xFE\x80\x00\x00\x6C\x4A\xFD\xFE\x02\x01\x00\xFD\xFE\x80\x10\x00\x00\x00\xFD\xFE\x02\x08\x00\xFD\xFE\x81\x00\xFF\xFD\xFE\x81\x01\xFF\xFD')
channelpacket2 = bytearray(b'\xFE\x05\x01\x02\x00\xFD\xFE\x80\x00\x00\x62\xA4\xFD\xFE\x02\x01\x00\xFD\xFE\x80\x10\x00\x00\x00\xFD\xFE\x02\x08\x00\xFD\xFE\x81\x00\xFF\xFD\xFE\x81\x01\xFF\xFD')
channelpacket3 = bytearray(b'\xFE\x05\x01\x03\x00\xFD\xFE\x80\x00\x00\x65\x84\xFD\xFE\x02\x01\x00\xFD\xFE\x80\x10\x00\x00\x00\xFD\xFE\x02\x08\x00\xFD\xFE\x81\x00\xFF\xFD\xFE\x81\x01\xFF\xFD')
channelpacket4 = bytearray(b'\xFE\x05\x01\x04\x00\xFD\xFE\x80\x00\x00\x62\xA6\xFD\xFE\x02\x01\x00\xFD\xFE\x80\x10\x00\x00\x00\xFD\xFE\x02\x08\x00\xFD\xFE\x81\x00\xFF\xFD\xFE\x81\x01\xFF\xFD')
channelpacket5 = bytearray(b'\xFE\x05\x01\x05\x00\xFD\xFE\x80\x00\x00\x65\x86\xFD\xFE\x02\x01\x00\xFD\xFE\x80\x10\x00\x00\x00\xFD\xFE\x02\x08\x00\xFD\xFE\x81\x00\xFF\xFD\xFE\x81\x01\xFF\xFD')
channelpacket6 = bytearray(b'\xFE\x05\x01\x06\x00\xFD\xFE\x80\x00\x00\x69\x69\xFD\xFE\x02\x01\x00\xFD\xFE\x80\x10\x00\x00\x00\xFD\xFE\x02\x08\x00\xFD\xFE\x81\x00\xFF\xFD\xFE\x81\x01\xFF\xFD')
endpacket = bytearray(b'\xFE\x80\x20\x00\x0D\xA0\xFD\xFE\x02\x09\x01\xFD\xFE\xF9\xFD\x00')

#frequencies in MHZ
frequency1 = 173.2625
frequency2 = 157.825
frequency3 = 162.425
frequency4 = 157.8375
frequency5 = 162.4375
frequency6 = 168.6625

print("Frequencies to be programmed:")
print(frequency1, "MHz")
print(frequency2, "MHz")
print(frequency3, "MHz")
print(frequency4, "MHz")
print(frequency5, "MHz")
print(frequency6, "MHz")

frequency1 = int(frequency1 * 1e6 / 6.25e3)
channelpacket1[8:12] = frequency1.to_bytes(length=4, byteorder="big")

frequency2 = int(frequency1 * 1e6 / 6.25e3)
channelpacket2[8:12] = frequency2.to_bytes(length=4, byteorder="big")

frequency3 = int(frequency1 * 1e6 / 6.25e3)
channelpacket3[8:12] = frequency3.to_bytes(length=4, byteorder="big")

frequency4 = int(frequency1 * 1e6 / 6.25e3)
channelpacket4[8:12] = frequency4.to_bytes(length=4, byteorder="big")

frequency5 = int(frequency1 * 1e6 / 6.25e3)
channelpacket5[8:12] = frequency5.to_bytes(length=4, byteorder="big")

frequency6 = int(frequency1 * 1e6 / 6.25e3)
channelpacket6[8:12] = frequency6.to_bytes(length=4, byteorder="big")

h11ser.write(channelpacket1)
time.sleep(0.012)
h11ser.write(channelpacket2)
time.sleep(0.012)
h11ser.write(channelpacket3)
time.sleep(0.012)
h11ser.write(channelpacket4)
time.sleep(0.012)
h11ser.write(channelpacket5)
time.sleep(0.012)
h11ser.write(channelpacket6)
time.sleep(0.012)
h11ser.write(endpacket)
time.sleep(0.012)

print("all done")