예제 #1
0
    void SetUp() 
    {
        Mqtt = make_shared<MockMQTTClient>();
        ModbusBackend = make_shared<TFakeModbusBackend>();
        ModbusServer = make_shared<TModbusServer>(ModbusBackend);

        ModbusBackend->AllocateCache(0, 100, 100, 100, 100);
    
        PMQTTConverter conv1 = make_shared<TMQTTIntConverter>(TMQTTIntConverter::SIGNED, 1.0, 2);
        observers[0] = make_shared<TGatewayObserver>("/devices/device1/controls/topic1", conv1, Mqtt);
        ModbusServer->Observe(observers[0], TStoreType::HOLDING_REGISTER, TModbusAddressRange(0, 1));
        Mqtt->Observe(observers[0]);

        observers[1] = make_shared<TGatewayObserver>("/devices/device1/controls/topic2", conv1, Mqtt);
        ModbusServer->Observe(observers[1], TStoreType::HOLDING_REGISTER, TModbusAddressRange(1, 1));
        Mqtt->Observe(observers[1]);

        // test a coil to write on "#/on"
        PMQTTConverter coil_conv = make_shared<TMQTTDiscrConverter>();
        observers[2] = make_shared<TGatewayObserver>("/devices/device1/controls/coil1", coil_conv, Mqtt);
        ModbusServer->Observe(observers[2], TStoreType::COIL, TModbusAddressRange(0, 1));
        Mqtt->Observe(observers[2]);
        
        observers[3] = make_shared<TGatewayObserver>("/devices/device1/controls/coil2", coil_conv, Mqtt);
        ModbusServer->Observe(observers[3], TStoreType::COIL, TModbusAddressRange(1, 1));
        Mqtt->Observe(observers[3]);
        
        observers[4] = make_shared<TGatewayObserver>("/devices/device1/controls/coil3", coil_conv, Mqtt);
        ModbusServer->Observe(observers[4], TStoreType::COIL, TModbusAddressRange(2, 1));
        Mqtt->Observe(observers[4]);



        ModbusServer->AllocateCache();
    }