Hepta UplinkData Q

Dependencies:   mbed PowerControl SDFileSystem

Fork of Hepta_UplinkData_Q by 智也 大野

hepta_sat/HeptaXbee.cpp

Committer:
tomoya123
Date:
2016-12-13
Revision:
1:d9b4d2303984
Parent:
0:edad9f0f386a

File content as of revision 1:d9b4d2303984:

#include "HeptaXbee.h"
#include "mbed.h"
#include  <stdarg.h>

HeptaXbee::HeptaXbee(PinName tx, PinName rx) : xbee(tx,rx)
{
    rcmd = 0;
    cmdflag = 0;
}
void HeptaXbee::baud(int rate)
{
    xbee.baud(rate);
}
void HeptaXbee::xbee_recieve(int *xrcmd, int *xcmdflag) {
    xbee.attach(this,&HeptaXbee::commandget,Serial::RxIrq);
    //xbee.printf("ssXbeedata= %d,%d",HeptaXbee::rcmd,HeptaXbee::cmdflag);
    *xrcmd = HeptaXbee::rcmd;
    *xcmdflag = HeptaXbee::cmdflag;
}

void HeptaXbee::initialize(){
    HeptaXbee::rcmd = 0;
    HeptaXbee::cmdflag = 0;
}

void HeptaXbee::commandget(){
    HeptaXbee::rcmd=xbee.getc();
    HeptaXbee::cmdflag = 1;
    //xbee.printf("Xbeedata= %d,%d",rcmd,cmdflag);
}
void HeptaXbee::putc(char data)
{
    xbee.putc(data);
}
void HeptaXbee::xbee_transmit(char* output_data,size_t output_n,
                        char data1[],char data2[],char data3[],char data4[],char data5[],char data6[],char data7[],char data8[],char data9[],
                            int n1,int n2,int n3,int n4,int n5,int n6,int n7,int n8,int n9)
{
    int N=0,i=0,ii,jj=0;
    for(i = 0; i <= n1-1; i++){
        output_data[N+i] = data1[i];
    }
    N=i;
    for(i = 0; i <= n2-1; i++){
        output_data[N+i] = data2[i];
    }
    N=N+i;
    for(i = 0; i <= n3-1; i++){
        output_data[N+i] = data3[i];
    }
    N=N+i;
    for(i = 0; i <= n4-1; i++){
    output_data[N+i] = data4[i];
    }
    N=N+i;
    for(i = 0; i <= n5-1; i++){
    output_data[N+i] = data5[i];
    }
    N=N+i;
    for(i = 0; i <= n6-1; i++){
    output_data[N+i] = data6[i];
    }
    N=N+i;
    for(i = 0; i <= n7-1; i++){
    output_data[N+i] = data7[i];
    }
    N=N+i;
    for(i = 0; i <= n8-1; i++){
    output_data[N+i] = data8[i];
    }
    N=N+i;
    for(i = 0; i <= n9-1; i++){
    output_data[N+i] = data9[i];
    }
    for(ii=0;ii<output_n;ii++){
        xbee.putc(output_data[ii]);  
        jj++;
        if(jj==2)
        {
            xbee.putc(0x20);//ascii  codeスペース
            jj=0;
        }      
    }
    xbee.putc(0x0a);//ascii code改行   
}
void HeptaXbee::puts( char *s ) {
        while ( char c    = *s++ )
            xbee.putc( c );
}
void HeptaXbee::printf( char *format, ... ) {
        char        s[ 32 ];
        va_list        args;

        va_start( args, format );
        vsnprintf( s, 32, format, args );
        va_end( args );

        xbee.puts( s );
}

void HeptaXbee::xbee_s_transmit(char dataA[],char dataB[],char dataC[],char dataD[])
{
    char OutputData[255];
    int output_num,numA,numB,numC,numD;
    numA = sizeof(dataA) / sizeof(dataA[0]);
    numB = sizeof(dataB) / sizeof(dataB[0]);
    numC = sizeof(dataC) / sizeof(dataC[0]);
    numD = sizeof(dataD) / sizeof(dataD[0]);
    output_num=numA+numB+numC+numD;
    int N=0,i=0,ii;
       for(i = 0; i <= numA-1; i++){
           OutputData[N+i] = dataA[i];
       }
       N=i;
       for(i = 0; i <= numB-1; i++){
           OutputData[N+i] = dataB[i];
       }
       N=N+i;
       for(i = 0; i <= numC-1; i++){
           OutputData[N+i] = dataC[i];
       }
       N=N+i;
       for(i = 0; i <= numD-1; i++){
           OutputData[N+i] = dataD[i];
       }
       for(ii=0;ii<output_num;ii++){
        xbee.putc(OutputData[ii]);
       } 
    xbee.putc(0x0a);
    xbee.putc(0x0d);
}