コード例 #1
0
ファイル: mwgc.c プロジェクト: m3us/multiwii-mavlink-gc
void recieveFromFS()
{

    int recsize = recvfrom(sockFSin, &fsMsg, sizeof(fsMsg), 0, NULL, NULL);
    if (recsize > 0) {
        MW_TRACE("\n")MW_TRACE(" <-- udp in FS <--\n")
        swap32(&fsMsg.ctrl);
        if (fsMsg.ctrl != FS_OUTCTRL) {
            if (mavlinkState->verbose) {
                printf("%d\n", fsMsg.ctrl);
            }
            MW_TRACE(" <-- udp in FS Checksum Failed <--\n")
        } else {
コード例 #2
0
int main(int argc, char* argv[])
{
    // serial devices "COM5" or /dev/ttyUSB0 ..
    char serialDevice[256] = "";

    for (int i = 1; i < argc; i++) {
        if (i + 1 != argc) {
            if (strcmp(argv[i], "-s") == 0) {
                strcpy(serialDevice, argv[i + 1]);
                i++;
            }
        }
    }

    MW_TRACE("starting..\n")
    serialLink = MWIserialbuffer_init(serialDevice);

    if (serialLink == NOK) {
        perror("error opening serial port");
        return EXIT_FAILURE;
    }

    // mwi state
    mwiState = calloc(sizeof(*mwiState),sizeof(*mwiState));
    mwiState->callback = &callBack_mwi;

    uint64_t lastFrameRequest = 0;

    printf("currentTime;angx;angy;head;ax;ay;az;gx;gy;gz;magx;magy;magz;mot[0];mot[1];mot[2];mot[3];mot[4];mot[5];rcRoll;rcPitch;rcYaw;rcThrottle;rcAUX1;rcAUX2;rcAUX3;rcAUX4;debug1;debug2;debug3;debug4\n");

    for (;;) {

        currentTime = microsSinceEpoch();

        if ((currentTime - lastFrameRequest) > 1000 * 30) {
            if (initOk == OK) {
                lastFrameRequest = currentTime;
                MWIserialbuffer_askForFrame(serialLink, MSP_RAW_IMU);
                MWIserialbuffer_askForFrame(serialLink, MSP_DEBUG);
                MWIserialbuffer_askForFrame(serialLink, MSP_BAT);
                MWIserialbuffer_askForFrame(serialLink, MSP_ALTITUDE);
                MWIserialbuffer_askForFrame(serialLink, MSP_COMP_GPS);
                MWIserialbuffer_askForFrame(serialLink, MSP_RAW_GPS);
                MWIserialbuffer_askForFrame(serialLink, MSP_RC);
                MWIserialbuffer_askForFrame(serialLink, MSP_MOTOR);
                MWIserialbuffer_askForFrame(serialLink, MSP_SERVO);
                MWIserialbuffer_askForFrame(serialLink, MSP_RAW_IMU);
                MWIserialbuffer_askForFrame(serialLink, MSP_STATUS);
                MWIserialbuffer_askForFrame(serialLink, MSP_ATTITUDE);
            } else {
                MWIserialbuffer_askForFrame(serialLink, MSP_IDENT);
            }
        }

        MWIserialbuffer_readNewFrames(serialLink, mwiState);

        usleep(5000);
    }
}
コード例 #3
0
ファイル: mwgc.c プロジェクト: m3us/multiwii-mavlink-gc
void recieveFromGS(void)
{
    ssize_t recsize;
    socklen_t fromlen;
    uint8_t udpInBuf[BUFFER_LENGTH];
    memset(udpInBuf, 0, BUFFER_LENGTH);

    recsize = recvfrom(sock, (void *)udpInBuf, BUFFER_LENGTH, 0, (SOCKADDR *)&locGSAddr, SOCKLEN_T_INT(&fromlen));
    if (recsize > 0) {
        MW_TRACE("\n")MW_TRACE(" <-- udp in GS <--\n")
        mavlink_message_t msgIn;
        mavlink_status_t status;
        for (int i = 0; i < recsize; ++i) {
            if (mavlink_parse_char(MAVLINK_COMM_0, udpInBuf[i], &msgIn, &status)) {
                // Packet received
                if (mavlinkState->verbose) {
                    printf("\nReceived packet: SYS: %d, COMP: %d, LEN: %d, MSG ID: %d\n", msgIn.sysid, msgIn.compid, msgIn.len, msgIn.msgid);
                }
                handleMessage(&msgIn);
            }
        }
    }
}