diff --git a/src/enums.ts b/src/enums.ts index c1e53e6..b2c80cf 100644 --- a/src/enums.ts +++ b/src/enums.ts @@ -17,6 +17,7 @@ export enum DjiDeviceResolution { } export enum DjiDeviceModel { + osmoAction1, osmoAction3, osmoAction4, osmoAction5Pro, @@ -24,6 +25,7 @@ export enum DjiDeviceModel { unknown, } export enum DjiDeviceModelName { + osmoAction1 = 'Osmo Action', osmoAction3 = 'Osmo Action 3', osmoAction4 = 'Osmo Action 4', osmoAction5Pro = 'Osmo Action 5 Pro', @@ -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: diff --git a/src/model.ts b/src/model.ts index fa351ee..9752fa5 100644 --- a/src/model.ts +++ b/src/model.ts @@ -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]); @@ -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)) { @@ -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; @@ -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); }