Skip to content

Commit

Permalink
Fix data target testing for lorawan device (#273)
Browse files Browse the repository at this point in the history
  • Loading branch information
fcv-iteratorIt authored Oct 1, 2024
1 parent f64082c commit 0bb37a9
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
2 changes: 2 additions & 0 deletions src/modules/device-management/data-target.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import { DataTargetSenderModule } from "@modules/data-target/data-target-sender.
import { PayloadDecoderExecutorModuleModule } from "@modules/payload-decoder-executor-module.module";
import { PayloadDecoderModule } from "@modules/device-management/payload-decoder.module";
import { IoTDeviceModule } from "@modules/device-management/iot-device.module";
import { ChirpstackAdministrationModule } from "@modules/device-integrations/chirpstack-administration.module";

@Module({
imports: [
Expand All @@ -28,6 +29,7 @@ import { IoTDeviceModule } from "@modules/device-management/iot-device.module";
forwardRef(() => PayloadDecoderModule),
forwardRef(() => IoTDeviceModule),
PayloadDecoderExecutorModuleModule,
ChirpstackAdministrationModule,
],
exports: [DataTargetService, DataTargetLogService, DataTargetSenderService],
controllers: [DataTargetController, DatatargetLogController],
Expand Down
11 changes: 9 additions & 2 deletions src/services/data-targets/data-target.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ import { TransformedPayloadDto } from "@dto/kafka/transformed-payload.dto";
import { PayloadDecoderExecutorService } from "@services/data-management/payload-decoder-executor.service";
import { PayloadDecoderService } from "@services/data-management/payload-decoder.service";
import { IoTDeviceService } from "@services/device-management/iot-device.service";
import { IoTDeviceType } from "@enum/device-type.enum";
import { ChirpstackDeviceService } from "@services/chirpstack/chirpstack-device.service";

@Injectable()
export class DataTargetService {
Expand All @@ -47,7 +49,8 @@ export class DataTargetService {
@Inject(forwardRef(() => PayloadDecoderService))
private payloadDecoderService: PayloadDecoderService,
@Inject(forwardRef(() => IoTDeviceService))
private iotDeviceService: IoTDeviceService
private iotDeviceService: IoTDeviceService,
private chirpstackDeviceService: ChirpstackDeviceService
) {}

async findAndCountAllWithPagination(
Expand Down Expand Up @@ -214,7 +217,7 @@ export class DataTargetService {

public async testDataTarget(testDto: TestDataTargetDto): Promise<TestDataTargetResultDto> {
const dataTarget = await this.findOne(testDto.dataTargetId);
const iotDevice = await this.iotDeviceService.findOne(testDto.iotDeviceId);
let iotDevice = await this.iotDeviceService.findOne(testDto.iotDeviceId);

if (dataTarget.type === DataTargetType.MQTT && !testDto.dataPackage) {
const result = await this.dataTargetSenderService.testMqttDataTarget(dataTarget);
Expand All @@ -224,6 +227,10 @@ export class DataTargetService {
let rawPackage = JSON.parse(testDto.dataPackage);
if (testDto.payloadDecoderId) {
const payloadDecoder = await this.payloadDecoderService.findOne(testDto.payloadDecoderId);
if (iotDevice.type === IoTDeviceType.LoRaWAN && payloadDecoder.decodingFunction.includes("lorawanSettings")) {
iotDevice = await this.chirpstackDeviceService.enrichLoRaWANDevice(iotDevice);
}

const decoded = await this.payloadDecoderExecutorService.callUntrustedCode(
payloadDecoder.decodingFunction,
iotDevice,
Expand Down

0 comments on commit 0bb37a9

Please sign in to comment.