Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/enums.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,15 @@ export enum DjiDeviceResolution {
}

export enum DjiDeviceModel {
osmoAction1,
osmoAction3,
osmoAction4,
osmoAction5Pro,
osmoPocket3,
unknown,
}
export enum DjiDeviceModelName {
osmoAction1 = 'Osmo Action',
osmoAction3 = 'Osmo Action 3',
osmoAction4 = 'Osmo Action 4',
osmoAction5Pro = 'Osmo Action 5 Pro',
Expand All @@ -43,6 +45,8 @@ export const getDjiDeviceModelName = (
model: DjiDeviceModel,
): DjiDeviceModelName => {
switch (model) {
case DjiDeviceModel.osmoAction1:
return DjiDeviceModelName.osmoAction1;
case DjiDeviceModel.osmoAction3:
return DjiDeviceModelName.osmoAction3;
case DjiDeviceModel.osmoAction4:
Expand Down
14 changes: 10 additions & 4 deletions src/model.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { DjiDeviceModel, DjiDeviceModelName } from './enums.js';

const djiTechnologyCoLtd = Buffer.from([0xaa, 0x08]);
const djiTechnologyCoLtd_old = Buffer.from([0xc0, 0xe5]);
const djiDeviceModelOsmoAction1 = Buffer.from([0x82, 0x00]);
const djiDeviceModelOsmoAction3 = Buffer.from([0x12, 0x00]);
const djiDeviceModelOsmoAction4 = Buffer.from([0x14, 0x00]);
const djiDeviceModelOsmoAction5Pro = Buffer.from([0x15, 0x00]);
Expand All @@ -13,8 +15,10 @@ export function djiModelFromManufacturerData(
return null;
}
const modelData = data.subarray(2, 4);
if (modelData.equals(djiDeviceModelOsmoAction3)) {
return DjiDeviceModel.osmoAction3;
if (modelData.equals(djiDeviceModelOsmoAction1)) {
return DjiDeviceModel.osmoAction1;
} else if (modelData.equals(djiDeviceModelOsmoAction3)) {
return DjiDeviceModel.osmoAction3;
} else if (modelData.equals(djiDeviceModelOsmoAction4)) {
return DjiDeviceModel.osmoAction4;
} else if (modelData.equals(djiDeviceModelOsmoAction5Pro)) {
Expand All @@ -32,7 +36,9 @@ export function djiModelNameFromManufacturerData(
return null;
}
const modelData = data.subarray(2, 4);
if (modelData.equals(djiDeviceModelOsmoAction3)) {
if (modelData.equals(djiDeviceModelOsmoAction1)) {
return DjiDeviceModelName.osmoAction1;
} else if (modelData.equals(djiDeviceModelOsmoAction3)) {
return DjiDeviceModelName.osmoAction3;
} else if (modelData.equals(djiDeviceModelOsmoAction4)) {
return DjiDeviceModelName.osmoAction4;
Expand All @@ -46,5 +52,5 @@ export function djiModelNameFromManufacturerData(
}

export function isDjiDevice(manufacturerData: Buffer): boolean {
return manufacturerData.subarray(0, 2).equals(djiTechnologyCoLtd);
return manufacturerData.subarray(0, 2).equals(djiTechnologyCoLtd || manufacturerData.subarray(0, 2).equals(djiTechnologyCoLtd_old);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you're missing a ) right before the || manufacturerData.subarray..

Also maybe its better to just do this instead to save some performance (not that it really matters, but it is better)

export function isDjiDevice(manufacturerData: Buffer): boolean {
  const manufacturerId = manufacturerData.subarray(0, 2);
  return manufacturerId.equals(djiTechnologyCoLtd) || manufacturerId.equals(djiTechnologyCoLtd_old);
}

}