# Serialization (Application chip) serial communication script

import serial
import array

# *** Open serial port ***
ser = serial.Serial("COM15", 115200)
print('\nSeria; port: {0}'.format(ser.name), end='\n\n')


###############################################################
print('SEQ: SD_BLE_CFG_SET (BLE_COMMON_CFG_VS_UUID)')
###############################################################

# *** TX data ****
txdat=[0x08,0x00,0x00,0x69,0x01,0x00,0x00,0x00,0x01,0x02]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()

# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: SD_BLE_ENABLE')
###############################################################

# *** TX data ****
txdat=[0x02,0x00,0x00,0x60]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()


# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: SD_BLE_GAP_ADDR_SET')
###############################################################

# *** TX data ****
txdat=[0x0A,0x00,0x00,0x6C,0x01,0x00,0x11,0x22,0x33,0x44,0x55,0x66]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()

# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: SD_BLE_UUID_VS_ADD')
###############################################################

# *** TX data ****
txdat=[0x14,0x00,0x00,0x62,0x01,0x67,0x07,0x60,0xA4,0x84,0x5D,0x26,0xAE,0x12,0x41,0x64,0xCE,0x61,0x28,0xE5,0xA6,0x01]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()


# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: SD_BLE_UUID_VS_ADD')
###############################################################

# *** TX data ****
txdat=[0x14,0x00,0x00,0x62,0x01,0xCD,0xE4,0x71,0xB6,0xC2,0x2A,0xE6,0x9E,0x44,0x41,0x8D,0x88,0x45,0x68,0x78,0xF3,0x01]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()


# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: SD_BLE_GATTS_SERVICE_ADD')
###############################################################

# *** TX data ****
txdat=[0x08,0x00,0x00,0xA8,0x01,0x01,0xA4,0x84,0x02,0x01]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()


# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: SD_BLE_GATTS_CHARACTERISTIC_ADD')
###############################################################

# *** TX data ****
txdat=[0x26,0x00,0x00,0xAA,0x00,0x00,0x01,0x3E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x11,0x11,0x02,0x00,0x01,0x01,0xA4,0x84,0x02,0x01,0x11,0x11,0x1D,0x00,0x00,0x00,0x02,0x02,0x00,0x01,0x04,0x00,0x01]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()


# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: SD_BLE_GATTS_CHARACTERISTIC_ADD')
###############################################################

# *** TX data ****
txdat=[0x26,0x00,0x00,0xAA,0x00,0x00,0x01,0x3E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x11,0x11,0x02,0x00,0x01,0x01,0xB6,0xC2,0x03,0x01,0x11,0x11,0x1D,0x00,0x00,0x00,0x02,0x02,0x00,0x01,0x04,0x00,0x01]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()


# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: SD_BLE_GAP_ADV_SET_CONFIGURE')
###############################################################

# *** TX data ****
txdat=[0x38,0x00,0x00,0x72,0x01,0xFF,0x01,0x01,0x00,0x00,0x00,0x10,0x00,0x01,0x02,0x01,0x06,0x0C,0xFF,0x42,0x04,0x43,0x4E,0x54,0x31,0x01,0x89,0x54,0x42,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x2C,0x01,0x00,0x00,0x50,0x46,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()


# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: SD_BLE_GAP_ADV_START')
###############################################################

# *** TX data ****
txdat=[0x04,0x00,0x00,0x73,0x00,0x00]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()


# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: BLE_GAP_EVT_CONNECTED')
###############################################################

# *** RX data ****
b_reply = ser.read(3)
ope_code = ser.read(1)
#result = ser.read_all()
result = ser.read(50)

print('RX :', end=' ')
for r in b_reply + ope_code + result:
    print("%02x" % r, end=' ')
print()

chk_code = bytes([0x10]);
if ope_code != chk_code:
    print('ERR: Invalid opecode')
    exit()

print()


###############################################################
print('SEQ: BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST')
###############################################################

# *** RX data ****
b_reply = ser.read(3)
ope_code = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + ope_code + result:
    print("%02x" % r, end=' ')
print()

chk_code = bytes([0x51]);
if ope_code != chk_code:
    print('ERR: Invalid opecode')
    exit()

# *** TX data ****
txdat=[0x24,0x00,0x00,0xB0,0x03,0x00,0x01,0x01,0x00,0x00,0x01,0x00,0x00,0x16,0x00,0x01,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()

# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST')
###############################################################

# *** RX data ****
b_reply = ser.read(3)
ope_code = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + ope_code + result:
    print("%02x" % r, end=' ')
print()

chk_code = bytes([0x51]);
if ope_code != chk_code:
    print('ERR: Invalid opecode')
    exit()

# *** TX data ****
txdat=[0x24,0x00,0x00,0xB0,0x03,0x00,0x01,0x01,0x00,0x00,0x01,0x16,0x00,0x16,0x00,0x01,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()

# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST')
###############################################################

# *** RX data ****
b_reply = ser.read(3)
ope_code = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + ope_code + result:
    print("%02x" % r, end=' ')
print()

chk_code = bytes([0x51]);
if ope_code != chk_code:
    print('ERR: Invalid opecode')
    exit()

# *** TX data ****
txdat=[0x24,0x00,0x00,0xB0,0x03,0x00,0x01,0x01,0x00,0x00,0x01,0x2C,0x00,0x16,0x00,0x01,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,0x41]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()

# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST')
###############################################################

# *** RX data ****
b_reply = ser.read(3)
ope_code = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + ope_code + result:
    print("%02x" % r, end=' ')
print()

chk_code = bytes([0x51]);
if ope_code != chk_code:
    print('ERR: Invalid opecode')
    exit()

# *** TX data ****
txdat=[0x24,0x00,0x00,0xB0,0x03,0x00,0x01,0x01,0x00,0x00,0x01,0x42,0x00,0x16,0x00,0x01,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()

# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


###############################################################
print('SEQ: BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST')
###############################################################

# *** RX data ****
b_reply = ser.read(3)
ope_code = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + ope_code + result:
    print("%02x" % r, end=' ')
print()

chk_code = bytes([0x51]);
if ope_code != chk_code:
    print('ERR: Invalid opecode')
    exit()

# *** TX data ****
txdat=[0x24,0x00,0x00,0xB0,0x03,0x00,0x01,0x01,0x00,0x00,0x01,0x58,0x00,0x16,0x00,0x01,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D]

send_binary =bytes(txdat)
ser.write(send_binary)

print('TX : ', end='')
for w in txdat:
    print("%02x" % w, end=' ')
print()

# *** RX data ****
b_reply = ser.read(1)
result = ser.read_all()

print('RX :', end=' ')
for r in b_reply + result:
    print("%02x" % r, end=' ')
print(end='\n\n')


# *** Close serial port ***
ser.close()
