TI's CC3100 websocket camera demo with Arducam mini ov5642 and freertos. Should work with other M3's. Work in progress test demo.

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers base64.cpp Source File

base64.cpp

00001 //*****************************************************************************
00002 // Copyright (C) 2014 Texas Instruments Incorporated
00003 //
00004 // All rights reserved. Property of Texas Instruments Incorporated.
00005 // Restricted rights to use, duplicate or disclose this code are
00006 // granted through contract.
00007 // The program may not be used without the written permission of
00008 // Texas Instruments Incorporated or against the terms and conditions
00009 // stipulated in the agreement under which this program has been supplied,
00010 // and under no circumstances can it be used with non-TI connectivity device.
00011 //
00012 //*****************************************************************************
00013 
00014 /**
00015  * @defgroup base64_api
00016  *
00017  * @{
00018  */
00019 #include "base64.h"
00020 
00021 static const char g_ccB64Tbl[65] =
00022    "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
00023 
00024 
00025 void ConvertToBase64(char *pcOutStr, const char *pccInStr, int iLen)
00026 {
00027     const char* pccIn = (const char *)pccInStr;
00028     char* pcOut;
00029     int iCount;
00030     pcOut = pcOutStr;
00031 
00032     //Loop in for Multiple of 24Bits and Convert to Base 64    
00033     for (iCount = 0; iLen - iCount >=3 ; iCount += 3,pccIn += 3)
00034     {       
00035         *pcOut++ = g_ccB64Tbl[pccIn[0] >> 2];
00036         *pcOut++ = g_ccB64Tbl[((pccIn[0] & 0x03)<<4) | (pccIn[1] >> 4)];
00037         *pcOut++ = g_ccB64Tbl[((pccIn[1] & 0x0F)<<2) | (pccIn[2] >> 6)];
00038         *pcOut++ = g_ccB64Tbl[pccIn[2] & 0x3f];
00039         
00040     }
00041     
00042     //Check if String is not multiple of 3 Bytes
00043     if (iCount != iLen)
00044     {
00045         
00046         unsigned char ucLastByte;
00047 
00048         *pcOut++ = g_ccB64Tbl[pccIn[0] >> 2];
00049         ucLastByte = ((pccIn[0] & 0x03)<<4);
00050         
00051       
00052         if (iLen - iCount > 1)
00053         {
00054             //If there are 2 Extra Bytes
00055             ucLastByte |= (pccIn[1] >> 4);
00056             *pcOut++ = g_ccB64Tbl[ucLastByte];
00057             *pcOut++ = g_ccB64Tbl[((pccIn[1] & 0x0F)<<2)];
00058         }
00059         else
00060         {
00061              //If there is only 1 Extra Byte
00062              *pcOut++ = g_ccB64Tbl[ucLastByte];
00063              *pcOut++ = '=';
00064         }            
00065                                 
00066          *pcOut++ = '=';            
00067     }
00068     
00069     *pcOut  = '\0';
00070     
00071 }
00072 
00073 /// @}
00074 
00075