update Home PC 22 May 2026

This commit is contained in:
chanweehewsonos
2026-05-22 19:08:33 +08:00
parent aa91ee38fa
commit ed6e5c507d
857 changed files with 78641 additions and 49 deletions

View File

@@ -9,6 +9,10 @@ USB Audio Device IN 4 = 1
[Output] [Output]
Speakers (USB PnP Audio Device) L = 0.920000 Speakers (USB PnP Audio Device) L = 0.920000
Speakers (USB PnP Audio Device) R = 0.920000 Speakers (USB PnP Audio Device) R = 0.920000
USB Audio Device Analogue 1 = 2.47
USB Audio Device Analogue 2 = 2.47
USB Audio Device Analogue 3 = 2.47
USB Audio Device Analogue 4 = 2.47
[Amp] [Amp]
Speakers (USB PnP Audio Device) - Amp L = 14.904000 Speakers (USB PnP Audio Device) - Amp L = 14.904000

View File

@@ -3,12 +3,30 @@ Microphone (USB PnP Audio Device) L = 1.07
Microphone (USB PnP Audio Device) R = 1.07 Microphone (USB PnP Audio Device) R = 1.07
Microphone (3- USB PnP Audio Device) L = 1.028740 Microphone (3- USB PnP Audio Device) L = 1.028740
Microphone (3- USB PnP Audio Device) R = 1.034020 Microphone (3- USB PnP Audio Device) R = 1.034020
USB Audio Device IN 1 = 0.0004
USB Audio Device IN 2 = 0.0004
USB Audio Device IN 3 = 0.0004
USB Audio Device IN 4 = 0.0004
USB Audio Device IN 5 = 0.0004
USB Audio Device IN 6 = 0.0004
USB Audio Device IN 7 = 0.0004
USB Audio Device IN 8 = 0.0004
[Output] [Output]
Speakers (USB PnP Audio Device) L = 0.920000 Speakers (USB PnP Audio Device) L = 0.920000
Speakers (USB PnP Audio Device) R = 0.920000 Speakers (USB PnP Audio Device) R = 0.920000
Speakers (USB Advanced Audio Device) L = 0.920000
Speakers (USB Advanced Audio Device) R = 0.920000
Speakers (3- USB PnP Audio Device) L = 0.920000 Speakers (3- USB PnP Audio Device) L = 0.920000
Speakers (3- USB PnP Audio Device) R = 0.920000 Speakers (3- USB PnP Audio Device) R = 0.920000
USB Audio Device Analogue 1 = 0.400000
USB Audio Device Analogue 2 = 0.400000
USB Audio Device Analogue 3 = 0.400000
USB Audio Device Analogue 4 = 0.400000
USB Audio Device Analogue 5 = 0.400000
USB Audio Device Analogue 6 = 0.400000
USB Audio Device Analogue 7 = 0.400000
USB Audio Device Analogue 8 = 0.400000
[Amp] [Amp]
Speakers (USB PnP Audio Device) - Amp L = 14.904000 Speakers (USB PnP Audio Device) - Amp L = 14.904000

View File

@@ -9,6 +9,10 @@ Speakers (USB PnP Audio Device) L = 0.920000
Speakers (USB PnP Audio Device) R = 0.920000 Speakers (USB PnP Audio Device) R = 0.920000
Speakers (3- USB PnP Audio Device) L = 0.920000 Speakers (3- USB PnP Audio Device) L = 0.920000
Speakers (3- USB PnP Audio Device) R = 0.920000 Speakers (3- USB PnP Audio Device) R = 0.920000
USB Audio Device Analogue 1 = 2.47
USB Audio Device Analogue 2 = 2.47
USB Audio Device Analogue 3 = 2.47
USB Audio Device Analogue 4 = 2.47
[Amp] [Amp]
Speakers (USB PnP Audio Device) - Amp L = 14.904000 Speakers (USB PnP Audio Device) - Amp L = 14.904000

View File

@@ -0,0 +1,431 @@
import sys, machine, time, json
import binascii
config = {'type': 'undefined', 'no': 'undefined', 'count': 0}
config_file = "config.json"
##########################################################
command_info = [
{ "cmd": "ping", "descript": "return OK if mico controller board works normal" },
{ "cmd": "reset", "descript": "reboot mico controller board" },
{ "cmd": "get_config", "descript": "read configuration from mico controller board",
"parameters": [
{ "config_item_name": "config item to read, if not provide will return all config values" }
],
"example": "> get_config count\n < 0\n > get_config\n < {'no': 'undefined', 'type': 'undefined', 'count': 0}"
},
{ "cmd": "set_config", "descript": "set configuration to mico controller board",
"parameters": [
{ "config_item_name": "config item name" },
{ "config_item_value": "config item value " }
],
"example": ">set_config sn 'CONTROLLER-001'"
},
{ "cmd": "gpio_init", "descript": "initial gpio pin",
"parameters": [
{ "pin_num": "gpio pin number" },
{ "gpio direction": "0 - input, 1 - output" },
{ "initial status": "initial status of gpio pin, 0 - low, 1 - high" },
{ "pull control": "UP - enable pull up, DOWN - enable pull down, others - disable pull function"}
],
"example": ">gpio_init 1 1 1 UP"
},
{ "cmd": "gpio_set", "descript": "set gpio pin status",
"parameters": [
{ "pin_num": "gpio pin number" },
{ "pin status": "initial status of gpio pin, 0 - low, 1 - high" }
],
"example": ">gpio_set 1 0"
},
{ "cmd": "gpio_get", "descript": "get gpio pin status",
"parameters": [
{ "pin_num": "gpio pin number" }
],
"example": ">gpio_get 1"
},
{ "cmd": "i2c_cleanup", "descript": "release i2c bus" },
{ "cmd": "i2c_scan", "descript": "scan i2c devices" },
{ "cmd": "i2c_read", "descript": "perform read operation from i2c device",
"parameters": [
{ "device": "i2c slave device address" },
{ "length": "bytes to read" }
],
"example": ">i2c_read 0x20 1\n <succeed: 0xFF"
},
{ "cmd": "i2c_read_add", "descript": "perform read operation from i2c device with register address",
"parameters": [
{ "device": "i2c slave device address" },
{ "addr": "register address" },
{ "length": "bytes to read" }
],
"example": ">i2c_read_add 0x20 0 2\n <succeed: 0xFF 0x01"
},
{ "cmd": "i2c_write", "descript": "perform write operation to i2c device ",
"parameters": [
{ "device": "i2c slave device address" },
{ "data": "bytes to write" }
],
"example": ">i2c_write 0x20 0x01 0x02 0x03 ... 0x10"
},
{ "cmd": "i2c_write_add", "descript": "perform write operation to i2c device with register address",
"parameters": [
{ "device": "i2c slave device address" },
{ "addr": "register address" },
{ "data": "bytes to write" }
],
"example": ">i2c_write 0x20 0x12 0x01 0x02 0x03 ... 0x10"
},
{ "cmd": "spi_setup", "descript": "initial spi bus",
"parameters": [
{ "clk_freq": "ispi clock frequence" },
{ "sck_pin": "sck pin io number" },
{ "mosi_pin": "mosi pin io number" },
{ "miso_pin": "miso pin io number" },
{ "cs_pin": "cs pin io number, -1 if don't want spi controller toggle cs pin" },
{ "polarity": "polarity setting for spi bus" },
{ "phase": "phase setting for spi bus" }
],
"example": ">spi_setup 100000 2 3 0 1 0 1"
},
{ "cmd": "spi_cleanup", "descript": "release spi bus" },
{ "cmd": "spi_read", "descript": "perform read operation from spi device",
"parameters": [
{ "length": "bytes to read" }
],
"example": ">spi_read 3\n <succeed: 0xFF 0xAA 0xBB"
},
{ "cmd": "spi_write", "descript": "perform write operation to spi device ",
"parameters": [
{ "data": "bytes to write" }
],
"example": ">spi_write 0x01 0x02 0x03 ... 0x10"
},
{ "cmd": "spi_write_read", "descript": "perform write and then read to spi device ",
"parameters": [
{ "length": "bytes to read" },
{ "data": "bytes to write" }
],
"example": ">spi_write_read 3 0x01 0x02 0x03 ... 0x10\n <succeed: 0xFF 0xAA 0xBB"
},
]
##########################################################
def load_config():
global config
try:
f = open(config_file,'r')
config = json.load(f)
f.close()
except:
print('config file not exist, load default settings!')
save_config()
def save_config():
f = open(config_file,'w')
json.dump(config, f)
f.close()
def bytes_to_str(bytes):
return ",".join([f"0x{b:02x}" for b in bytes])
def str_to_int(str):
if str.startswith("0x"):
return int(str, 16)
else:
return int(str, 10)
def print_help():
for command in command_info:
print(f"{command['cmd']} - {command['descript']}")
if 'parameters' in command.keys():
print(' parameters:')
for parameter in command['parameters']:
parameter_name = list(parameter.keys())[0]
print(f" {parameter_name}: {parameter[parameter_name]}")
if 'example' in command.keys():
print(' example:')
print(f' {command['example']}')
if 'parameters' in command.keys() or 'example' in command.keys():
print('')
##########################################################
load_config()
i2c_controller = None
spi_controller = None
spi_cs_pin = None
gpio_dict = {}
print('Sonos Micro Controller V1.0')
print("PyLang", sys.version_info, ";", sys.implementation)
print('=======================================')
while True:
input_string = str(input())
args = input_string.split(" ")
if len(args) >= 1:
if args[0] == 'help' or args[0] == '?':
print_help()
elif args[0] == 'ping': # check if command line is available
print('OK')
elif args[0] == 'reset':
machine.reset()
elif args[0] == 'get_config':
print(config)
elif args[0] == 'set_config':
if args[1] != None and args[2] != None:
config[args[1]] = args[2]
save_config()
else:
print('invalid arguments for set command: ', input_string)
######################################################################
## GPIO control commands
######################################################################
elif args[0] == 'gpio_init':
# gpio_init 1 1 1 UP
try:
pin_num = str_to_int(args[1])
pin_direction = machine.Pin.OUT if str_to_int(args[2]) == 1 else machine.Pin.IN
init_status = str_to_int(args[3])
pull_control = None
if len(args) >= 5:
if args[4].upper().strip() == 'UP':
pull_control = machine.Pin.PULL_UP
elif args[4].upper().strip() == 'DOWN':
pull_control = machine.Pin.PULL_DOWN
else:
print('failed: invalid pull control ', args[4])
gpio_dict[pin_num] = machine.Pin(pin_num, pin_direction, pull_control)
if pin_direction == machine.Pin.OUT:
gpio_dict[pin_num].value(init_status)
print('succeed: ', gpio_dict[pin_num])
except Exception as e:
print('failed: ', e)
elif args[0] == 'gpio_set':
try:
pin_num = str_to_int(args[1])
pin_status = str_to_int(args[2])
if pin_num in gpio_dict:
gpio_dict[pin_num].value(pin_status)
print('succeed: ')
else:
print(f'failed: pin not initialized - {pin_num}')
except Exception as e:
print('failed: ', e)
elif args[0] == 'gpio_get':
try:
pin_num = str_to_int(args[1])
if pin_num in gpio_dict:
print('succeed: ', gpio_dict[pin_num].value())
else:
print(f'failed: pin not initialized - {pin_num}')
except Exception as e:
print('failed: ', e)
######################################################################
## I2C controller commands
######################################################################
elif args[0] == 'i2c_setup':
# ====== i2c controller setup ======
# PiPico: i2c_setup 100000 0 1 # 100000 - i2c clock frequence, 0 - sda pin io number, 1 - scl pin io number
# ESP32: i2c_setup 100000 8 9 # 100000 - i2c clock frequence, 8 - sda pin io number, 9 - scl pin io number
try:
if i2c_controller is not None:
i2c_controller = None
clk_freq = str_to_int(args[1])
sda_pin = str_to_int(args[2])
scl_pin = str_to_int(args[3])
i2c_controller = machine.I2C(0, sda=machine.Pin(sda_pin, machine.Pin.OPEN_DRAIN, machine.Pin.PULL_UP), scl=machine.Pin(scl_pin, machine.Pin.OUT, machine.Pin.PULL_UP), freq=clk_freq) # Frequency in Hz
print('succeed: ', i2c_controller)
except Exception as e:
print('failed: ', e)
elif args[0] == 'i2c_cleanup':
# ====== i2c controller setup ======
try:
if i2c_controller is not None:
i2c_controller = None
print('succeed: ')
except Exception as e:
print('failed: ', e)
elif args[0] == 'i2c_scan':
# ====== scan I2C devices ======
try:
devices = i2c_controller.scan()
if len(devices) == 0:
print('failed: ', "no I2C devices found")
else:
print('succeed: ', bytes_to_str(devices))
except Exception as e:
print('failed: ', e)
elif args[0] == 'i2c_read':
# ====== i2c data read ======
# i2c_read 0x20 1 # 0x20 - device_address, 1 - read length
try:
device = str_to_int(args[1])
length = str_to_int(args[2])
data = i2c_controller.readfrom(device, length)
print('succeed: ', data.hex(','))
except Exception as e:
print('failed: ', e)
elif args[0] == 'i2c_read_add':
# ====== i2c data read address ======
# i2c_read_add 0x20 0 2 # 0x20 - device_address, 0 - register address, 2 - read length
try:
device = str_to_int(args[1])
addr = str_to_int(args[2])
length = str_to_int(args[3])
data = i2c_controller.readfrom_mem(device, addr, length)
print('succeed: ', bytes_to_str(data))
except Exception as e:
print('failed: ', e)
elif args[0] == 'i2c_write':
# ====== i2c data write ======
# i2c_write 0x20 0x01 0x02 0x03 ... 0x10 # 0x20 - device_address, 0x01 ~ 0x10 - data to write to device
try:
device = str_to_int(args[1])
data = bytearray()
for i in range(2, len(args)):
data.append(str_to_int(args[i]))
i2c_controller.writeto(device, data)
print('succeed: ')
except Exception as e:
print('failed: ', e)
elif args[0] == 'i2c_write_add':
# ====== i2c data write address ======
# i2c_write_add 0x20 0x12 0x01 0x02 0x03 ... 0x10 # 0x20 - device_address, 0x12 - register address, 0x01 ~ 0x10 - data to write to device
try:
device = str_to_int(args[1])
addr = str_to_int(args[2])
data = bytearray()
for i in range(3, len(args)):
data.append(str_to_int(args[i]))
i2c_controller.writeto_mem(device, addr, data)
print('succeed: ')
except Exception as e:
print('failed: ', e)
######################################################################
## SPI controller commands
######################################################################
elif args[0] == 'spi_setup':
# ====== spi controller setup ======
# PiPico: spi_setup 100000 2 3 0 1 0 1 # param#1: 100000 - spi clock frequence
# # param#2: 2 - sck pin io number
# # param#3: 3 - mosi pin io number
# # param#4: 0 - miso pin io number
# # param#5: 1 - cs pin io number, -1 if don't want spi controller toggle cs pin
# # param#6: 0 - polarity setting
# # param#7: 1 - phase setting
#
try:
if spi_controller is not None:
spi_controller = None
if spi_cs_pin is not None:
spi_cs_pin = None
clk_freq = str_to_int(args[1])
spi_sck_pin = machine.Pin(str_to_int(args[2]))
spi_mosi_pin = machine.Pin(str_to_int(args[3]))
spi_miso_pin = machine.Pin(str_to_int(args[4]))
spi_cs_pin = machine.Pin(str_to_int(args[5]), machine.Pin.OUT)
polarity = str_to_int(args[6])
phase = str_to_int(args[7])
spi_controller = machine.SPI(0, baudrate=clk_freq, polarity=polarity, phase=phase, sck=spi_sck_pin, mosi=spi_mosi_pin, miso=spi_miso_pin)
print('succeed: ', spi_controller)
except Exception as e:
print('failed: ', e)
elif args[0] == 'spi_cleanup':
# ====== spi controller setup ======
try:
if spi_controller is not None:
spi_controller = None
if spi_cs_pin is not None:
spi_cs_pin = None
print('succeed: ')
except Exception as e:
print('failed: ', e)
elif args[0] == 'spi_read':
# ====== spi data read ======
# spi_read 3 # 3 - read length
try:
length = str_to_int(args[1])
# active cs pin if required
if spi_cs_pin is not None:
spi_cs_pin.value(0)
data = spi_controller.read(length)
# deactive cs pin if required
if spi_cs_pin is not None:
spi_cs_pin.value(1)
print('succeed: ', data.hex(','))
except Exception as e:
print('failed: ', e)
elif args[0] == 'spi_write':
# ====== spi data write ======
# spi_write 0x01 0x02 0x03 ... 0x10 # 0x01 ~ 0x10 - data to write to device
try:
data = bytearray()
for i in range(1, len(args)):
data.append(str_to_int(args[i]))
# active cs pin if required
if spi_cs_pin is not None:
spi_cs_pin.value(0)
spi_controller.write(data)
# deactive cs pin if required
if spi_cs_pin is not None:
spi_cs_pin.value(1)
print('succeed: ')
except Exception as e:
print('failed: ', e)
elif args[0] == 'spi_write_read':
# ====== spi data read ======
# spi_write_read 3 0x01 0x02 0x03 ... 0x10 # 3 - read length, 0x01 ~ 0x10 - data to write to device
try:
read_length = str_to_int(args[1])
# active cs pin if required
if spi_cs_pin is not None:
spi_cs_pin.value(0)
write_data = bytearray()
for i in range(2, len(args)):
write_data.append(str_to_int(args[i]))
spi_controller.write(write_data)
read_data = spi_controller.read(read_length)
# deactive cs pin if required
if spi_cs_pin is not None:
spi_cs_pin.value(1)
print('succeed: ', read_data.hex(','))
except Exception as e:
print('failed: ', e)
else:
print('unknow command: ', args[0])

Binary file not shown.

View File

@@ -1,3 +1,3 @@
[My Computer] [My Computer]
My Computer = "172.20.6.234" My Computer = "192.168.189.1"

View File

@@ -118,7 +118,7 @@
<Property Name="Destination[1].destName" Type="Str">Support Directory</Property> <Property Name="Destination[1].destName" Type="Str">Support Directory</Property>
<Property Name="Destination[1].path" Type="Path">../builds/NI_AB_PROJECTNAME/Boyi_Airleak</Property> <Property Name="Destination[1].path" Type="Path">../builds/NI_AB_PROJECTNAME/Boyi_Airleak</Property>
<Property Name="DestinationCount" Type="Int">2</Property> <Property Name="DestinationCount" Type="Int">2</Property>
<Property Name="Source[0].itemID" Type="Str">{F7A1B2B7-1F75-4035-9780-1FD0539777FD}</Property> <Property Name="Source[0].itemID" Type="Str">{FAB75C3B-4DE3-4C7E-8E11-DF5BC1395959}</Property>
<Property Name="Source[0].type" Type="Str">Container</Property> <Property Name="Source[0].type" Type="Str">Container</Property>
<Property Name="Source[1].destinationIndex" Type="Int">0</Property> <Property Name="Source[1].destinationIndex" Type="Int">0</Property>
<Property Name="Source[1].itemID" Type="Ref">/My Computer/Boyi_AirLeakTest.vi</Property> <Property Name="Source[1].itemID" Type="Ref">/My Computer/Boyi_AirLeakTest.vi</Property>

View File

@@ -1,2 +1,3 @@
[My Computer] [My Computer]
My Computer = "192.168.56.1" My Computer = "192.168.189.1"

View File

@@ -1,11 +1,11 @@
[ProjectWindow_Data] [ProjectWindow_Data]
ProjectExplorer.ClassicPosition[String] = "122,1095,750,1706" ProjectExplorer.ClassicPosition[String] = "59,2036,687,2647"
[AB_Cache_{796D7191-C432-47E7-AEE9-9E35637FEE0F}] [AB_Cache_{B8F52674-5859-47DA-8D81-080F55E0F424}]
Cache_Path[Path] Line0001 = "/C/Users/wee/AppData/Local/Temp/AB_Cache_{796D7191" Cache_Path[Path] Line0001 = "/C/Users/wee/AppData/Local/Temp/AB_Cache_{B8F52674"
Cache_Path[Path] Line0002 = "-C432-47E7-AEE9-9E35637FEE0F}.txt" Cache_Path[Path] Line0002 = "-5859-47DA-8D81-080F55E0F424}.txt"
[AB_Cache_{18DF3938-90E1-49FE-869A-36578EADDB71}] [AB_Cache_{D0745400-408B-4D6D-B4B5-09629F97B805}]
Cache_Path[Path] Line0001 = "/C/Users/wee/AppData/Local/Temp/AB_Cache_{18DF3938" Cache_Path[Path] Line0001 = "/C/Users/wee/AppData/Local/Temp/AB_Cache_{D0745400"
Cache_Path[Path] Line0002 = "-90E1-49FE-869A-36578EADDB71}.txt" Cache_Path[Path] Line0002 = "-408B-4D6D-B4B5-09629F97B805}.txt"

View File

@@ -10,7 +10,8 @@
<Property Name="server.vi.callsEnabled" Type="Bool">true</Property> <Property Name="server.vi.callsEnabled" Type="Bool">true</Property>
<Property Name="server.vi.propertiesEnabled" Type="Bool">true</Property> <Property Name="server.vi.propertiesEnabled" Type="Bool">true</Property>
<Property Name="specify.custom.address" Type="Bool">false</Property> <Property Name="specify.custom.address" Type="Bool">false</Property>
<Item Name="Boyi_AirLeakTest Rel1.vi" Type="VI" URL="../Boyi_AirLeakTest Rel1.vi"/> <Item Name="Boyi_AirLeakTest Rel2.vi" Type="VI" URL="../Boyi_AirLeakTest Rel2.vi"/>
<Item Name="MESDll.dll" Type="Document" URL="../MESDll.dll"/>
<Item Name="Settings.ini" Type="Document" URL="../Settings.ini"/> <Item Name="Settings.ini" Type="Document" URL="../Settings.ini"/>
<Item Name="Dependencies" Type="Dependencies"> <Item Name="Dependencies" Type="Dependencies">
<Item Name="vi.lib" Type="Folder"> <Item Name="vi.lib" Type="Folder">
@@ -68,14 +69,13 @@
<Item Name="JSON_results_file_make_and_save.vi" Type="VI" URL="../SupportVIs/JSON_results_file_make_and_save.vi"/> <Item Name="JSON_results_file_make_and_save.vi" Type="VI" URL="../SupportVIs/JSON_results_file_make_and_save.vi"/>
<Item Name="LuxShare_CheckStation.vi" Type="VI" URL="../SupportVIs/LuxShare_CheckStation.vi"/> <Item Name="LuxShare_CheckStation.vi" Type="VI" URL="../SupportVIs/LuxShare_CheckStation.vi"/>
<Item Name="LuxShare_SaveResult.vi" Type="VI" URL="../SupportVIs/LuxShare_SaveResult.vi"/> <Item Name="LuxShare_SaveResult.vi" Type="VI" URL="../SupportVIs/LuxShare_SaveResult.vi"/>
<Item Name="MESDll.dll" Type="Document" URL="../SupportVIs/MESDll.dll"/>
<Item Name="MesInterfacelib.dll" Type="Document" URL="../SupportVIs/LuxshareMES/Debug/MesInterfacelib.dll"/> <Item Name="MesInterfacelib.dll" Type="Document" URL="../SupportVIs/LuxshareMES/Debug/MesInterfacelib.dll"/>
<Item Name="Sorting_Serial_Read.vi" Type="VI" URL="../SupportVIs/Sorting_Serial_Read.vi"/> <Item Name="Sorting_Serial_Read.vi" Type="VI" URL="../SupportVIs/Sorting_Serial_Read.vi"/>
<Item Name="StringToHex.vi" Type="VI" URL="../SupportVIs/StringToHex.vi"/> <Item Name="StringToHex.vi" Type="VI" URL="../SupportVIs/StringToHex.vi"/>
<Item Name="UTF8 LV80.vi" Type="VI" URL="../SupportVIs/UTF8 LV80.vi"/> <Item Name="UTF8 LV80.vi" Type="VI" URL="../SupportVIs/UTF8 LV80.vi"/>
</Item> </Item>
<Item Name="Build Specifications" Type="Build"> <Item Name="Build Specifications" Type="Build">
<Item Name="Boyi Airleak Rel 1 Installer" Type="Installer"> <Item Name="Boyi Airleak Rel 2 Installer" Type="Installer">
<Property Name="Destination[0].name" Type="Str">Boyi Airleak Test</Property> <Property Name="Destination[0].name" Type="Str">Boyi Airleak Test</Property>
<Property Name="Destination[0].parent" Type="Str">{3912416A-D2E5-411B-AFEE-B63654D690C0}</Property> <Property Name="Destination[0].parent" Type="Str">{3912416A-D2E5-411B-AFEE-B63654D690C0}</Property>
<Property Name="Destination[0].tag" Type="Str">{7B893F76-DB9F-4AEC-833B-2D928504EF09}</Property> <Property Name="Destination[0].tag" Type="Str">{7B893F76-DB9F-4AEC-833B-2D928504EF09}</Property>
@@ -132,14 +132,14 @@
<Property Name="DistPart[2].upgradeCode" Type="Str">{3B195EBF-4A09-46E6-8EAD-931568C1344C}</Property> <Property Name="DistPart[2].upgradeCode" Type="Str">{3B195EBF-4A09-46E6-8EAD-931568C1344C}</Property>
<Property Name="DistPartCount" Type="Int">3</Property> <Property Name="DistPartCount" Type="Int">3</Property>
<Property Name="INST_autoIncrement" Type="Bool">true</Property> <Property Name="INST_autoIncrement" Type="Bool">true</Property>
<Property Name="INST_buildLocation" Type="Path">../builds/Boyi Airleak Test Rel 1/Boyi Airleak Rel 1 Installer</Property> <Property Name="INST_buildLocation" Type="Path">../builds/Boyi Airleak Test Rel 2/Boyi Airleak Rel 2 Installer</Property>
<Property Name="INST_buildLocation.type" Type="Str">relativeToCommon</Property> <Property Name="INST_buildLocation.type" Type="Str">relativeToCommon</Property>
<Property Name="INST_buildSpecName" Type="Str">Boyi Airleak Rel 1 Installer</Property> <Property Name="INST_buildSpecName" Type="Str">Boyi Airleak Rel 2 Installer</Property>
<Property Name="INST_defaultDir" Type="Str">{7B893F76-DB9F-4AEC-833B-2D928504EF09}</Property> <Property Name="INST_defaultDir" Type="Str">{7B893F76-DB9F-4AEC-833B-2D928504EF09}</Property>
<Property Name="INST_productName" Type="Str">Boyi Airleak Test Rel 1</Property> <Property Name="INST_productName" Type="Str">Boyi Airleak Test Rel 2</Property>
<Property Name="INST_productVersion" Type="Str">1.0.3</Property> <Property Name="INST_productVersion" Type="Str">1.0.5</Property>
<Property Name="InstSpecBitness" Type="Str">32-bit</Property> <Property Name="InstSpecBitness" Type="Str">32-bit</Property>
<Property Name="InstSpecVersion" Type="Str">18008007</Property> <Property Name="InstSpecVersion" Type="Str">18008012</Property>
<Property Name="MSI_autoselectDrivers" Type="Bool">true</Property> <Property Name="MSI_autoselectDrivers" Type="Bool">true</Property>
<Property Name="MSI_distID" Type="Str">{F220AF39-DFF4-42DA-8468-607C9471CB6B}</Property> <Property Name="MSI_distID" Type="Str">{F220AF39-DFF4-42DA-8468-607C9471CB6B}</Property>
<Property Name="MSI_hideNonRuntimes" Type="Bool">true</Property> <Property Name="MSI_hideNonRuntimes" Type="Bool">true</Property>
@@ -151,60 +151,61 @@
<Property Name="RegDestCount" Type="Int">1</Property> <Property Name="RegDestCount" Type="Int">1</Property>
<Property Name="Source[0].dest" Type="Str">{7B893F76-DB9F-4AEC-833B-2D928504EF09}</Property> <Property Name="Source[0].dest" Type="Str">{7B893F76-DB9F-4AEC-833B-2D928504EF09}</Property>
<Property Name="Source[0].File[0].dest" Type="Str">{7B893F76-DB9F-4AEC-833B-2D928504EF09}</Property> <Property Name="Source[0].File[0].dest" Type="Str">{7B893F76-DB9F-4AEC-833B-2D928504EF09}</Property>
<Property Name="Source[0].File[0].name" Type="Str">Boyi Airleak Test.exe</Property> <Property Name="Source[0].File[0].name" Type="Str">Boyi Airleak Test Rel2.exe</Property>
<Property Name="Source[0].File[0].Shortcut[0].destIndex" Type="Int">0</Property> <Property Name="Source[0].File[0].Shortcut[0].destIndex" Type="Int">0</Property>
<Property Name="Source[0].File[0].Shortcut[0].name" Type="Str">Boyi Airleak Test</Property> <Property Name="Source[0].File[0].Shortcut[0].name" Type="Str">Boyi Airleak Test Rel2</Property>
<Property Name="Source[0].File[0].Shortcut[0].subDir" Type="Str">Boyi Airleak Test</Property> <Property Name="Source[0].File[0].Shortcut[0].subDir" Type="Str">Boyi Airleak Test Rel 1</Property>
<Property Name="Source[0].File[0].ShortcutCount" Type="Int">1</Property> <Property Name="Source[0].File[0].ShortcutCount" Type="Int">1</Property>
<Property Name="Source[0].File[0].tag" Type="Str">{3B38CC8E-D49F-4485-9E26-00AAEF33D0C1}</Property> <Property Name="Source[0].File[0].tag" Type="Str">{DF6F6D4E-5304-46EC-9A7A-44717F8C9C95}</Property>
<Property Name="Source[0].FileCount" Type="Int">1</Property> <Property Name="Source[0].FileCount" Type="Int">1</Property>
<Property Name="Source[0].name" Type="Str">Boyi Airleak Test Rel1</Property> <Property Name="Source[0].name" Type="Str">Boyi Airleak Test Rel2</Property>
<Property Name="Source[0].tag" Type="Ref">/My Computer/Build Specifications/Boyi Airleak Test Rel1</Property> <Property Name="Source[0].tag" Type="Ref">/My Computer/Build Specifications/Boyi Airleak Test Rel2</Property>
<Property Name="Source[0].type" Type="Str">EXE</Property> <Property Name="Source[0].type" Type="Str">EXE</Property>
<Property Name="SourceCount" Type="Int">1</Property> <Property Name="SourceCount" Type="Int">1</Property>
</Item> </Item>
<Item Name="Boyi Airleak Test Rel1" Type="EXE"> <Item Name="Boyi Airleak Test Rel2" Type="EXE">
<Property Name="App_copyErrors" Type="Bool">true</Property> <Property Name="App_copyErrors" Type="Bool">true</Property>
<Property Name="App_INI_aliasGUID" Type="Str">{E948E052-E6A7-4C6E-8F23-5160D019BDCA}</Property> <Property Name="App_INI_aliasGUID" Type="Str">{79E899CA-C107-442C-B645-DF13AD3BDC48}</Property>
<Property Name="App_INI_GUID" Type="Str">{9470399D-BA8C-4FDD-9920-A4C0BD0F4143}</Property> <Property Name="App_INI_GUID" Type="Str">{4B4EF9EA-3AD3-4618-93FD-150F6B69C86A}</Property>
<Property Name="App_serverConfig.httpPort" Type="Int">8002</Property> <Property Name="App_serverConfig.httpPort" Type="Int">8002</Property>
<Property Name="App_winsec.description" Type="Str">http://www.Sonos.com</Property>
<Property Name="Bld_autoIncrement" Type="Bool">true</Property> <Property Name="Bld_autoIncrement" Type="Bool">true</Property>
<Property Name="Bld_buildCacheID" Type="Str">{796D7191-C432-47E7-AEE9-9E35637FEE0F}</Property> <Property Name="Bld_buildCacheID" Type="Str">{B8F52674-5859-47DA-8D81-080F55E0F424}</Property>
<Property Name="Bld_buildSpecName" Type="Str">Boyi Airleak Test Rel1</Property> <Property Name="Bld_buildSpecName" Type="Str">Boyi Airleak Test Rel2</Property>
<Property Name="Bld_excludeInlineSubVIs" Type="Bool">true</Property> <Property Name="Bld_excludeInlineSubVIs" Type="Bool">true</Property>
<Property Name="Bld_excludeLibraryItems" Type="Bool">true</Property> <Property Name="Bld_excludeLibraryItems" Type="Bool">true</Property>
<Property Name="Bld_excludePolymorphicVIs" Type="Bool">true</Property> <Property Name="Bld_excludePolymorphicVIs" Type="Bool">true</Property>
<Property Name="Bld_localDestDir" Type="Path">../builds/Boyi Airleak Test Rel 1/Boyi Airleak Test Rel1</Property> <Property Name="Bld_localDestDir" Type="Path">../builds/NI_AB_PROJECTNAME/Boyi Airleak Test Rel2</Property>
<Property Name="Bld_localDestDirType" Type="Str">relativeToCommon</Property> <Property Name="Bld_localDestDirType" Type="Str">relativeToCommon</Property>
<Property Name="Bld_modifyLibraryFile" Type="Bool">true</Property> <Property Name="Bld_modifyLibraryFile" Type="Bool">true</Property>
<Property Name="Bld_previewCacheID" Type="Str">{18DF3938-90E1-49FE-869A-36578EADDB71}</Property> <Property Name="Bld_previewCacheID" Type="Str">{D0745400-408B-4D6D-B4B5-09629F97B805}</Property>
<Property Name="Bld_version.build" Type="Int">4</Property> <Property Name="Bld_version.build" Type="Int">14</Property>
<Property Name="Bld_version.major" Type="Int">1</Property> <Property Name="Bld_version.major" Type="Int">1</Property>
<Property Name="Destination[0].destName" Type="Str">Boyi Airleak Test.exe</Property> <Property Name="Destination[0].destName" Type="Str">Boyi Airleak Test Rel2.exe</Property>
<Property Name="Destination[0].path" Type="Path">../builds/Boyi Airleak Test Rel 1/Boyi Airleak Test Rel1/NI_AB_PROJECTNAME.exe</Property> <Property Name="Destination[0].path" Type="Path">../builds/NI_AB_PROJECTNAME/Boyi Airleak Test Rel2/Boyi Airleak Test Rel2.exe</Property>
<Property Name="Destination[0].preserveHierarchy" Type="Bool">true</Property> <Property Name="Destination[0].preserveHierarchy" Type="Bool">true</Property>
<Property Name="Destination[0].type" Type="Str">App</Property> <Property Name="Destination[0].type" Type="Str">App</Property>
<Property Name="Destination[1].destName" Type="Str">Support Directory</Property> <Property Name="Destination[1].destName" Type="Str">Support Directory</Property>
<Property Name="Destination[1].path" Type="Path">../builds/Boyi Airleak Test Rel 1/Boyi Airleak Test Rel1</Property> <Property Name="Destination[1].path" Type="Path">../builds/NI_AB_PROJECTNAME/Boyi Airleak Test Rel2</Property>
<Property Name="DestinationCount" Type="Int">2</Property> <Property Name="DestinationCount" Type="Int">2</Property>
<Property Name="Source[0].itemID" Type="Str">{6E14701C-1CE3-420A-8CEB-7A82A529FD25}</Property> <Property Name="Source[0].itemID" Type="Str">{9B149762-A632-421B-B31E-791EB1694928}</Property>
<Property Name="Source[0].type" Type="Str">Container</Property> <Property Name="Source[0].type" Type="Str">Container</Property>
<Property Name="Source[1].destinationIndex" Type="Int">0</Property> <Property Name="Source[1].destinationIndex" Type="Int">0</Property>
<Property Name="Source[1].itemID" Type="Ref">/My Computer/Boyi_AirLeakTest Rel1.vi</Property> <Property Name="Source[1].itemID" Type="Ref">/My Computer/Boyi_AirLeakTest Rel2.vi</Property>
<Property Name="Source[1].sourceInclusion" Type="Str">TopLevel</Property> <Property Name="Source[1].sourceInclusion" Type="Str">TopLevel</Property>
<Property Name="Source[1].type" Type="Str">VI</Property> <Property Name="Source[1].type" Type="Str">VI</Property>
<Property Name="Source[2].destinationIndex" Type="Int">0</Property> <Property Name="Source[2].destinationIndex" Type="Int">0</Property>
<Property Name="Source[2].itemID" Type="Ref">/My Computer/Settings.ini</Property> <Property Name="Source[2].itemID" Type="Ref">/My Computer/MESDll.dll</Property>
<Property Name="Source[2].sourceInclusion" Type="Str">Include</Property> <Property Name="Source[2].sourceInclusion" Type="Str">Include</Property>
<Property Name="SourceCount" Type="Int">3</Property> <Property Name="Source[3].destinationIndex" Type="Int">0</Property>
<Property Name="TgtF_companyName" Type="Str">Sonos</Property> <Property Name="Source[3].itemID" Type="Ref">/My Computer/Settings.ini</Property>
<Property Name="TgtF_fileDescription" Type="Str">Boyi Airleak Test Rel1</Property> <Property Name="Source[3].sourceInclusion" Type="Str">Include</Property>
<Property Name="TgtF_internalName" Type="Str">Boyi Airleak Test Rel1</Property> <Property Name="SourceCount" Type="Int">4</Property>
<Property Name="TgtF_legalCopyright" Type="Str">Copyright © 2023 Sonos</Property> <Property Name="TgtF_fileDescription" Type="Str">Boyi Airleak Test Rel2</Property>
<Property Name="TgtF_productName" Type="Str">Boyi Airleak Test Rel1</Property> <Property Name="TgtF_internalName" Type="Str">Boyi Airleak Test Rel2</Property>
<Property Name="TgtF_targetfileGUID" Type="Str">{3B38CC8E-D49F-4485-9E26-00AAEF33D0C1}</Property> <Property Name="TgtF_legalCopyright" Type="Str">Copyright © 2026 </Property>
<Property Name="TgtF_targetfileName" Type="Str">Boyi Airleak Test.exe</Property> <Property Name="TgtF_productName" Type="Str">Boyi Airleak Test Rel2</Property>
<Property Name="TgtF_targetfileGUID" Type="Str">{DF6F6D4E-5304-46EC-9A7A-44717F8C9C95}</Property>
<Property Name="TgtF_targetfileName" Type="Str">Boyi Airleak Test Rel2.exe</Property>
<Property Name="TgtF_versionIndependent" Type="Bool">true</Property> <Property Name="TgtF_versionIndependent" Type="Bool">true</Property>
</Item> </Item>
</Item> </Item>

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More