programa para pasar de septetos a octetos en tramas PDU

Dependencies:   mbed

Fork of pdu1 by Gustavo Ramirez

main.cpp

Committer:
tony63
Date:
2017-11-06
Revision:
2:00bc5b7669c6
Parent:
1:b0989e540fff

File content as of revision 2:00bc5b7669c6:

#include "mbed.h"
Serial pc(USBTX, USBRX); // tx, rx
/*
ALGORITMO PARA PASAR DE SEPTETOS A OCTETOS
EN UNA MENSAJE DE TEXTO DE CELULAR EN FORMATO PDU
USA DOS CADENAS UNA DE ENTRADA Y OTRA DE SALIDA
LENIN ES LA LONGITUD DE ENTRADA
LENOUT LA LONGITUD DE SALIDA
SE USA PARA ENSAMBLAR UNA TRAMA PDU
ESTA CADENA DE SALIDA SE ENVIA SOBRE LA TRAMA PDU COMPLETA
VERIFIQUE CON EL DECODIFICADOR DE ESTA PAGINA::
PROBADA PARA CUALQUIER LONGITUD VER:abril 27 DEL 2017
http://www.twit88.com/home/utility/sms-pdu-encode-decode
*/
char gi[50];
char gs[50];
int i,K,C,LENOUT,LENIN;
void SepToOct(char *DE, char *DS);//se declara la funcion 
int main(){
         ; //numero de caracteres de abajo
         pc.printf("prueba con gallina cafe\n");
         char gi[]="gallina cafe es una cochina";
         //en septetos es  67 61 6c 6c 69 6e 61 20 63 61 66 65 20 65 73 20 75 6e 61 20 63 6f 63 68 69 6e 61
         //en octetos es E7-30-9B-9D-76-87-41-E3-B0-B9-0C-2A-CF-41-75-77-18-34-7E-8F-D1-69-77-18        
         SepToOct(gi,gs);
         for (i=0;i<LENOUT;i++){//imprime resultados
         pc.printf("%2X",gs[i]&0x000000FF);
         }
         pc.printf("\n");
         for (i=0;i<LENOUT;i++){
         if(gs[i]<0x10){
             pc.printf("-%X%X",0,gs[i]);
             goto up1;
             }     
         pc.printf("-%2X",gs[i]);
   up1:      
         }
         pc.printf("\n");
         pc.printf("LENOUT:%2X,LENIN:%2X\r\n",LENOUT,strlen(gi));// longitudes en hex
         }
//------------------funcion de interes-- ---------------------------
         void SepToOct(char *DE, char *DS){
         LENIN=strlen(DE); //se mide el tamaño de la cadena de entrada
         int K=0;int C=0; int i=0;
         for (i=0;i < LENIN;i++){
         DS[i]=DE[i+C]>>K | DE[i+C+1]<<(7-K);
         if (DS[i]==0x00) {LENOUT=i; goto salir99;}// fin de la transformacion
         K++;
         if (K==7) {K=0;C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
                                }
salir99: for (i=0;i<LENOUT;i++){
         DS[i]=DS[i]&0x000000FF;
         }
         return;
         }