5 def gen_elrs(source
, target
, env
):
7 sys
.stdout
.write("Source bin: %s \n" % source_bin
)
8 bin_path
= os
.path
.dirname(source_bin
.rstr())
9 bin_target
= os
.path
.join(bin_path
, 'firmware.elrs')
10 with
open(bin_target
, "wb+") as _out
:
11 _out
.write(source_bin
.get_contents())
13 sys
.stdout
.write("\n")
14 sys
.stdout
.write("=====================================================================================================================================\n")
15 sys
.stdout
.write("|| !!! Copy %s to SD card and choose flash ext. ELRS !!! ||\n" % bin_target
)
16 sys
.stdout
.write("=====================================================================================================================================\n")
17 sys
.stdout
.write("\n")
20 def gen_frsky(source
, target
, env
):
21 print("generating frk file...")
22 if "_stock" in env
['PIOENV']:
24 sys
.stdout
.write("\n")
25 sys
.stdout
.write("\n")
26 sys
.stdout
.write("Building flashable .frk file...\n")
27 target_bin
= source
[0] # target[0]
28 sys
.stdout
.write("Source bin: %s \n" % target_bin
)
29 bin_path
= os
.path
.dirname(target_bin
.rstr())
30 bin_target
= os
.path
.join(bin_path
, 'elrs-old-bootloader.frk')
31 with
open(bin_target
, "wb+") as _out
:
32 bin_content
= target_bin
.get_contents()
33 # append FrSky header (16bytes)
35 struct FrSkyFirmwareInformation_no_pack {
36 uint32_t fourcc; = 0x4B535246
37 uint8_t headerVersion; = 1
38 uint8_t firmwareVersionMajor;
39 uint8_t firmwareVersionMinor;
40 uint8_t firmwareVersionRevision;
41 uint32_t size; == len(bin_content)
42 uint8_t productFamily;
47 sys
.stdout
.write("Bin size: %u \n" % len(bin_content
))
48 _out
.write(b
"\x46\x52\x53\x4B") # fourcc
49 _out
.write(b
"\x01") # header version
50 _out
.write(b
"\x00\x00\x00") # fw versions
51 size
= len(bin_content
) + 16
53 [size
& 0xFF, size
>> 8 & 0xFF, size
>> 16 & 0xFF, size
>> 24 & 0xFF]))
54 _out
.write(b
"\x00\x00") # productFamily, productId
55 _out
.write(b
"\x00\x00") # crc
56 _out
.write(bin_content
)
58 sys
.stdout
.write("\n")
59 sys
.stdout
.write("=====================================================================================================================================\n")
60 sys
.stdout
.write("|| !!! Copy %s to SD card and choose flash external in order to flash via OpenTX !!! ||\n" % bin_target
)
61 sys
.stdout
.write("=====================================================================================================================================\n")
62 sys
.stdout
.write("\n")