Skip to content

Commit

Permalink
Merge pull request #664 from ExpressLRS/gemini
Browse files Browse the repository at this point in the history
Add gemini support
  • Loading branch information
jurgelenas authored Sep 11, 2024
2 parents 6264a39 + 426b6e9 commit 17cad28
Show file tree
Hide file tree
Showing 6 changed files with 106 additions and 37 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@
"ts-jest": "^29.1.1",
"ts-loader": "^9.5.1",
"tsconfig-paths-webpack-plugin": "^4.1.0",
"typescript": "^5.4.5",
"typescript": "^5.6.2",
"url-loader": "^4.1.0",
"webpack": "^5.73.0",
"webpack-bundle-analyzer": "^4.10.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,12 @@ export default class DeviceDescriptionsLoader {
targetUserDefinesFactory.build(UserDefineKey.REGULATORY_DOMAIN_ISM_2400)
);
}
if (args.target.includes('_900.')) {
if (args.target.includes('tx_dual')) {
userDefines.push(
targetUserDefinesFactory.build(UserDefineKey.REGULATORY_DOMAIN_ISM_2400)
);
}
if (args.target.includes('_900.') || args.target.includes('tx_dual')) {
userDefines.push(
targetUserDefinesFactory.build(UserDefineKey.REGULATORY_DOMAIN_AU_915)
);
Expand Down
4 changes: 3 additions & 1 deletion src/i18n/locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@
"ManualMode": "Manual mode",
"CopyFromStandardMode": "Copy from Standard mode",
"LongerBuildTimeWarning": "When using the manual user-defined mode, the cloud binaries cache is disabled, resulting in much longer build times.",
"RegulatoryDomains": "Regulatory domains",
"RegulatoryDomainsISM": "Regulatory domains 2.4 GHz band",
"RegulatoryDomains900": "Regulatory domains 900 MHz band",
"RegulatoryDomains433": "Regulatory domains 433 MHz band",
"BindingPhraseSetup": "Binding phrase setup",
"CompatibilityOptions": "Compatibility options",
"PerformanceOptions": "Performance options",
Expand Down
57 changes: 49 additions & 8 deletions src/ui/components/DeviceOptionsForm/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,9 @@ interface DeviceOptionsFormProps {
}

enum UserDefineCategory {
RegulatoryDomains = 'REGULATORY_DOMAINS',
RegulatoryDomainsISM = 'REGULATORY_DOMAINS_ISM',
RegulatoryDomains900 = 'REGULATORY_DOMAINS_900',
RegulatoryDomains433 = 'REGULATORY_DOMAINS_433',
BindingPhrase = 'BINDING_PHRASE',
ExtraData = 'EXTRA_DATA',
PerformanceOptions = 'PERFORMANCE_OPTIONS',
Expand All @@ -78,7 +80,9 @@ const userDefinesToCategories = (
userDefines: UserDefine[]
): UserDefinesByCategory => {
const result: UserDefinesByCategory = {
[UserDefineCategory.RegulatoryDomains]: [],
[UserDefineCategory.RegulatoryDomainsISM]: [],
[UserDefineCategory.RegulatoryDomains900]: [],
[UserDefineCategory.RegulatoryDomains433]: [],
[UserDefineCategory.BindingPhrase]: [],
[UserDefineCategory.ExtraData]: [],
[UserDefineCategory.PerformanceOptions]: [],
Expand All @@ -88,13 +92,19 @@ const userDefinesToCategories = (
};

const keysToCategories: UserDefinesKeysByCategory = {
[UserDefineCategory.RegulatoryDomains]: [
[UserDefineCategory.RegulatoryDomainsISM]: [
UserDefineKey.REGULATORY_DOMAIN_ISM_2400,
UserDefineKey.REGULATORY_DOMAIN_EU_CE_2400,
],
[UserDefineCategory.RegulatoryDomains900]: [
UserDefineKey.REGULATORY_DOMAIN_AU_915,
UserDefineKey.REGULATORY_DOMAIN_EU_868,
UserDefineKey.REGULATORY_DOMAIN_FCC_915,
UserDefineKey.REGULATORY_DOMAIN_IN_866,
UserDefineKey.REGULATORY_DOMAIN_ISM_2400,
UserDefineKey.REGULATORY_DOMAIN_EU_CE_2400,
],
[UserDefineCategory.RegulatoryDomains433]: [
UserDefineKey.REGULATORY_DOMAIN_EU_433,
UserDefineKey.REGULATORY_DOMAIN_AU_433,
],
[UserDefineCategory.BindingPhrase]: [UserDefineKey.BINDING_PHRASE],
[UserDefineCategory.ExtraData]: [UserDefineKey.TLM_REPORT_INTERVAL_MS],
Expand Down Expand Up @@ -303,13 +313,44 @@ const DeviceOptionsForm: FunctionComponent<DeviceOptionsFormProps> = (
deviceOptions.userDefinesMode === UserDefinesMode.UserInterface && (
<Grid container spacing={3}>
<Grid item xs>
{categories[UserDefineCategory.RegulatoryDomains]?.length > 0 && (
{categories[UserDefineCategory.RegulatoryDomainsISM]?.length >
0 && (
<>
<Typography variant="h6" sx={styles.categoryTitle}>
{t('DeviceOptionsForm.RegulatoryDomains')}
{t('DeviceOptionsForm.RegulatoryDomainsISM')}
</Typography>
<UserDefinesList
options={categories[UserDefineCategory.RegulatoryDomains]}
options={
categories[UserDefineCategory.RegulatoryDomainsISM]
}
onChange={onOptionUpdate}
/>
</>
)}
{categories[UserDefineCategory.RegulatoryDomains900]?.length >
0 && (
<>
<Typography variant="h6" sx={styles.categoryTitle}>
{t('DeviceOptionsForm.RegulatoryDomains900')}
</Typography>
<UserDefinesList
options={
categories[UserDefineCategory.RegulatoryDomains900]
}
onChange={onOptionUpdate}
/>
</>
)}
{categories[UserDefineCategory.RegulatoryDomains433]?.length >
0 && (
<>
<Typography variant="h6" sx={styles.categoryTitle}>
{t('DeviceOptionsForm.RegulatoryDomains433')}
</Typography>
<UserDefinesList
options={
categories[UserDefineCategory.RegulatoryDomains433]
}
onChange={onOptionUpdate}
/>
</>
Expand Down
65 changes: 43 additions & 22 deletions src/ui/views/ConfiguratorView/UserDefinesValidator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,34 @@ export default class UserDefinesValidator {
validateRegulatoryDomains(data: UserDefine[]): Error[] {
const results: Error[] = [];

const regulatoryDomainKeys: UserDefineKey[] = [
UserDefineKey.REGULATORY_DOMAIN_AU_915,
UserDefineKey.REGULATORY_DOMAIN_EU_868,
UserDefineKey.REGULATORY_DOMAIN_AU_433,
UserDefineKey.REGULATORY_DOMAIN_EU_433,
UserDefineKey.REGULATORY_DOMAIN_FCC_915,
UserDefineKey.REGULATORY_DOMAIN_IN_866,
UserDefineKey.REGULATORY_DOMAIN_ISM_2400,
UserDefineKey.REGULATORY_DOMAIN_EU_CE_2400,
];

// Support case when there are no Regulatory Domain user defines at all. All 2.4 Ghz hardware
const regulatoryDomainsValidationRequired =
data.filter(({ key }) => regulatoryDomainKeys.includes(key)).length > 0;
if (!regulatoryDomainsValidationRequired) {
return results;
}
const regulatoryDomains: Map<string, UserDefineKey[]> = new Map([
[
'400 Mhz',
[
UserDefineKey.REGULATORY_DOMAIN_EU_433,
UserDefineKey.REGULATORY_DOMAIN_AU_433,
],
],
[
'900 MHz',
[
UserDefineKey.REGULATORY_DOMAIN_AU_915,
UserDefineKey.REGULATORY_DOMAIN_EU_868,
UserDefineKey.REGULATORY_DOMAIN_FCC_915,
UserDefineKey.REGULATORY_DOMAIN_IN_866,
],
],
[
'2.4 GHz',
[
UserDefineKey.REGULATORY_DOMAIN_ISM_2400,
UserDefineKey.REGULATORY_DOMAIN_EU_CE_2400,
],
],
]);

const regulatoryDomainKeys = Array.from(regulatoryDomains.values()).flat();
console.log('regulatoryDomainKeys', regulatoryDomainKeys);
const regulatoryDefines = data.filter(
({ key, enabled }) => regulatoryDomainKeys.includes(key) && enabled
);
Expand All @@ -30,11 +40,22 @@ export default class UserDefinesValidator {
new Error('You must choose a regulatory domain for your device')
);
}
if (regulatoryDefines.length > 1) {
results.push(
new Error('You must choose single regulatory domain for your device')
);
}

regulatoryDomains.forEach(
(categoryUserDefines: UserDefineKey[], categoryName: string) => {
console.log('categoryUserDefines', categoryUserDefines);
const enabledDefines = data.filter(
({ key, enabled }) => categoryUserDefines.includes(key) && enabled
);
if (enabledDefines.length > 1) {
results.push(
new Error(
`You must choose single regulatory domain for your device in ${categoryName} band`
)
);
}
}
);

return results;
}
Expand Down
8 changes: 4 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11376,10 +11376,10 @@ typescript@^4.0.2:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==

typescript@^5.4.5:
version "5.4.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611"
integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==
typescript@^5.6.2:
version "5.6.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0"
integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==

ua-parser-js@^0.7.30:
version "0.7.37"
Expand Down

0 comments on commit 17cad28

Please sign in to comment.