Commit 061c87a9 authored by Martin Cífka's avatar Martin Cífka
Browse files

fix for error when disconnected from wifi

parent 1d3b8439
Loading
Loading
Loading
Loading
Loading

.vscode/c_cpp_properties.json

deleted100644 → 0
+0 −21
Original line number Diff line number Diff line
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/sdk/src/**",
                "/usr/include/linux/**",
                "/usr/include/c++/10/tr1/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "gnu17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "linux-gcc-x64",
            "compilerArgs": [
                "-DUWS_NO_ZLIB -pthread -lstdc++fs"
            ]
        }
    ],
    "version": 4
}
 No newline at end of file
+3 −0
Original line number Diff line number Diff line
{
    "tasks": [
        
        {
            "label": "arm build & run",
            "command": "sudo",
@@ -12,6 +13,8 @@
                "isDefault": true
            },
        },


        {
            "type": "cppbuild",
            "label": "x86 build",
+208 B (9.38 MiB)

File changed.

No diff preview for this file type.

+3 −1
Original line number Diff line number Diff line
#!/usr/bin/bash

outfile=miphoto-exec
buildopts="-std=c++17 -Wno-psabi -static-libstdc++ -DUWS_NO_ZLIB -Isrc/lib/ArduinoJson -Isrc/lib/uSockets -Isrc/lib/uWebSockets -Isrc/lib/easyexif -Lsrc/lib -lpthread -lstdc++fs -l:uSockets.a -l:exif.a"
buildopts="-std=c++17 -Wno-psabi -static-libstdc++ -DUWS_NO_ZLIB -Isrc/lib/ArduinoJson -Isrc/lib/uSockets -Isrc/lib/uWebSockets -Isrc/lib/easyexif -Lsrc/lib -lpthread -lstdc++fs -l:uSockets.a -l:exif.a " #"-l:libambaeventnotifier.so -l:libcrc.so -l:libcrc_priv.so -l:libaipc_cfg.so -l:libambaipc.so"
sources=$(ls src/*.cpp 2>/dev/null | tr '\r\n' ' ') || (echo "No .cpp files found" && exit 1)

arm-linux-gnueabihf-c++ $sources $buildopts -o /workdir/build/miphoto/$outfile && echo -e "\nBUILD SUCCESSFUL.\n" || echo -e "\nBUILD FAILED.\n"
+43 −13
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
#include "commander.h"
#include "server.h"
#include "exif.h"
#include "sendToRTOS.h"

using namespace std;

@@ -100,7 +101,19 @@ bool Commander::getToken()

bool Commander::holdSession()
{
    return _sock.sendString(this->generateJSON(Codes::MsgId::QuerySessionHolder));
    //return _sock.sendString(this->generateJSON(Codes::MsgId::QuerySessionHolder));

    shared_ptr<DynamicJsonDocument> jsonPtr;
    // send QuerySessionHolder and check if response contains  "rval":InvalidToken
    bool failed =_sock.sendRecvVerify(
        generateJSON(Codes::MsgId::QuerySessionHolder, _token),
        jsonPtr,
        make_pair(Codes::MsgId::QuerySessionHolder,Codes::Rval::ErrorInvalidToken),
        std::chrono::milliseconds(1000),
        1
        );

    return !failed; 
}

bool Commander::wifiControl(bool on)
@@ -829,16 +842,18 @@ void Commander::invalidateCachedSettings()
    _bracketingBuiltIn = (Codes::ParamBracketingBuiltIn)-1;
}

void Commander::disconnectCommander()
void Commander::disconnectCommander(bool dropToken)
{
    if (dropToken)
    {
    // drop token
        shared_ptr<DynamicJsonDocument> jsonPtr;
        _sock.sendRecvVerify(
                generateJSON(Codes::MsgId::DropToken),
                jsonPtr,
                make_pair(Codes::MsgId::DropToken, Codes::Rval::CommandOk),
                chrono::milliseconds(1000),
            2);
                1);
    }
    
    disconnectSocket();
}
@@ -1041,6 +1056,7 @@ bool Commander::executorShoot(shared_ptr<DynamicJsonDocument> jsonPtr)
    }

    // turn of wifi if requested and shoot
    bool wifiTurnedOff = false;
    if ((*jsonPtr)["wifiOff"] == true)
    {
        _server->wsSendState(Server::State::DISCONNECTED);
@@ -1049,14 +1065,28 @@ bool Commander::executorShoot(shared_ptr<DynamicJsonDocument> jsonPtr)
            cerr << "Error: Couldn't turn off wifi." << endl;
            _server->wsSendNotification("Error: Couldn't turn off wifi...", true);
        }
        else
        {
            wifiTurnedOff = true;
            this_thread::sleep_for(chrono::milliseconds(200));
        }
    }

    
    SendToRTOS::SendWifiConnected(); // make camera think that someone is connected to the wifi
    this_thread::sleep_for(chrono::milliseconds(100));
    if (!shoot())
    {
        _server->wsSendNotification("Error while shooting...", true);
    }
    SendToRTOS::SendWifiDisconnected();
    this_thread::sleep_for(chrono::milliseconds(100));

    this_thread::sleep_for(chrono::milliseconds(300));
    if (wifiTurnedOff)
    {
        this_thread::sleep_for(chrono::milliseconds(200));
        wifiControl(true);
    }

    // set auto power-off to original value
    if (autoPowerOffBackup != _autoPowerOff)
Loading