STM32F407 to use prominene.

Also, switch the :'s to \t's everywhere I could find for the protocol to the ESP8266.
This commit is contained in:
cnlohr 2015-08-13 01:47:29 -04:00
parent ee756a820d
commit 30648367b7
9 changed files with 54 additions and 34 deletions

View file

@ -85,13 +85,19 @@ int ICACHE_FLASH_ATTR issue_command(char * buffer, int retsize, char *pusrdata,
case 'f': case 'F': //Flashing commands (F_) case 'f': case 'F': //Flashing commands (F_)
{ {
flashchip->chip_size = 0x01000000; flashchip->chip_size = 0x01000000;
const char * colon = (const char *) ets_strstr( (char*)&pusrdata[2], ":" ); const char * colon = (const char *) ets_strstr( (char*)&pusrdata[2], "\t" );
int nr = my_atoi( &pusrdata[2] ); int nr = my_atoi( &pusrdata[2] );
switch (pusrdata[1]) switch (pusrdata[1])
{ {
case 'e': case 'E': //(FE#\n) <- # = sector. case 'e': case 'E': //(FE#\n) <- # = sector.
{ {
if( nr < 128 )
{
buffend += ets_sprintf(buffend, "!FE%d\r\n", nr );
break;
}
EnterCritical(); EnterCritical();
spi_flash_erase_sector( nr ); //SPI_FLASH_SEC_SIZE 4096 spi_flash_erase_sector( nr ); //SPI_FLASH_SEC_SIZE 4096
ExitCritical(); ExitCritical();
@ -100,8 +106,14 @@ int ICACHE_FLASH_ATTR issue_command(char * buffer, int retsize, char *pusrdata,
break; break;
} }
case 'b': case 'B': //(FE#\n) <- # = sector. case 'b': case 'B': //(FB#\n) <- # = block.
{ {
if( nr < 8 )
{
buffend += ets_sprintf(buffend, "!FB%d\r\n", nr );
break;
}
EnterCritical(); EnterCritical();
SPIEraseBlock( nr ); SPIEraseBlock( nr );
ExitCritical(); ExitCritical();
@ -120,8 +132,8 @@ int ICACHE_FLASH_ATTR issue_command(char * buffer, int retsize, char *pusrdata,
if( colon ) if( colon )
{ {
colon++; colon++;
const char * colon2 = (const char *) ets_strstr( (char*)colon, ":" ); const char * colon2 = (const char *) ets_strstr( (char*)colon, "\t" );
if( colon2 ) if( colon2 && nr >= 524288)
{ {
colon2++; colon2++;
int datlen = (int)len - (colon2 - pusrdata); int datlen = (int)len - (colon2 - pusrdata);
@ -145,7 +157,7 @@ int ICACHE_FLASH_ATTR issue_command(char * buffer, int retsize, char *pusrdata,
datlen = (datlen/4)*4; //Must be multiple of 4 bytes datlen = (datlen/4)*4; //Must be multiple of 4 bytes
if( datlen <= 1280 ) if( datlen <= 1280 )
{ {
buffend += ets_sprintf(buffend, "FR%08d:%04d:", nr, datlen ); //Caution: This string must be a multiple of 4 bytes. buffend += ets_sprintf(buffend, "FR%08d\t%04d\t", nr, datlen ); //Caution: This string must be a multiple of 4 bytes.
spi_flash_read( nr, (uint32*)buffend, datlen ); spi_flash_read( nr, (uint32*)buffend, datlen );
break; break;
} }
@ -424,11 +436,11 @@ int ICACHE_FLASH_ATTR issue_command(char * buffer, int retsize, char *pusrdata,
on = !on; on = !on;
GPIO_OUTPUT_SET(GPIO_ID_PIN(nr), on ); GPIO_OUTPUT_SET(GPIO_ID_PIN(nr), on );
g_gpiooutputmask |= (1<<nr); g_gpiooutputmask |= (1<<nr);
buffend += ets_sprintf( buffend, "GF%d:%d\n", nr, on ); buffend += ets_sprintf( buffend, "GF%d\t%d\n", nr, on );
break; break;
} }
case 'g': case 'G': case 'g': case 'G':
buffend += ets_sprintf( buffend, "GG%d:%d\n", nr, GPIO_INPUT_GET( GPIO_ID_PIN(nr) ) ); buffend += ets_sprintf( buffend, "GG%d\t%d\n", nr, GPIO_INPUT_GET( GPIO_ID_PIN(nr) ) );
break; break;
case 's': case 'S': case 's': case 'S':
{ {
@ -438,7 +450,7 @@ int ICACHE_FLASH_ATTR issue_command(char * buffer, int retsize, char *pusrdata,
{ {
rmask |= GPIO_INPUT_GET( GPIO_ID_PIN(i) )?(1<<i):0; rmask |= GPIO_INPUT_GET( GPIO_ID_PIN(i) )?(1<<i):0;
} }
buffend += ets_sprintf( buffend, "GS:%d:%d\n", g_gpiooutputmask, rmask ); buffend += ets_sprintf( buffend, "GS\t%d\t%d\n", g_gpiooutputmask, rmask );
break; break;
} }
} }

View file

@ -12,22 +12,6 @@
static const char * key = ""; static const char * key = "";
static int keylen = 0; static int keylen = 0;
void SafeMD5Update( MD5_CTX * md5ctx, uint8_t*from, uint32_t size1 )
{
char __attribute__ ((aligned (32))) buffer[32];
while( size1 > 32 )
{
ets_memcpy( buffer, from, 32 );
MD5Update( md5ctx, buffer, 32 );
size1-=32;
from+=32;
}
ets_memcpy( buffer, from, 32 );
MD5Update( md5ctx, buffer, size1 );
}
static int MyRewriteFlash( char * command, int commandlen ) static int MyRewriteFlash( char * command, int commandlen )
{ {
@ -36,7 +20,7 @@ static int MyRewriteFlash( char * command, int commandlen )
char * colons[8]; char * colons[8];
int i, ipl = 0; int i, ipl = 0;
int p; int p;
//[from_address]:[to_address]:[size]:[MD5(key+data)]:[from_address]:[to_address]:[size]:[MD5(key+data)] //[from_address]\t[to_address]\t[size]\t[MD5(key+data)]\t[from_address]\t[to_address]\t[size]\t[MD5(key+data)]
command[commandlen] = 0; command[commandlen] = 0;
flashchip->chip_size = 0x01000000; flashchip->chip_size = 0x01000000;
@ -47,7 +31,7 @@ static int MyRewriteFlash( char * command, int commandlen )
for( i = 0; i < commandlen; i++ ) for( i = 0; i < commandlen; i++ )
{ {
if( command[i] == 0 ) break; if( command[i] == 0 ) break;
if( command[i] == ':' ) if( command[i] == '\t' )
{ {
if( ipl >= 8 ) break; if( ipl >= 8 ) break;
command[i] = 0; command[i] = 0;

View file

@ -268,7 +268,7 @@ void ICACHE_FLASH_ATTR HTTPHandleInternalCallback( )
curhttp->isdone = 1; curhttp->isdone = 1;
} }
void ICACHE_FLASH_ATTR InternalStartHTTP( ) void InternalStartHTTP( )
{ {
int32_t clusterno; int32_t clusterno;
int8_t i; int8_t i;
@ -327,7 +327,8 @@ http_disconnetcb(void *arg) {
((struct HTTPConnection * )pespconn->reverse)->state = 0; ((struct HTTPConnection * )pespconn->reverse)->state = 0;
} }
LOCAL void http_recvcb(void *arg, char *pusrdata, unsigned short length) LOCAL void ICACHE_FLASH_ATTR
http_recvcb(void *arg, char *pusrdata, unsigned short length)
{ {
struct espconn *pespconn = (struct espconn *) arg; struct espconn *pespconn = (struct espconn *) arg;

View file

@ -174,3 +174,21 @@ void ICACHE_FLASH_ATTR my_base64_encode(const unsigned char *data, size_t input_
encoded_data[j] = 0; encoded_data[j] = 0;
} }
void ICACHE_FLASH_ATTR SafeMD5Update( MD5_CTX * md5ctx, uint8_t*from, uint32_t size1 )
{
char __attribute__ ((aligned (32))) buffer[32];
while( size1 > 32 )
{
ets_memcpy( buffer, from, 32 );
MD5Update( md5ctx, buffer, 32 );
size1-=32;
from+=32;
}
ets_memcpy( buffer, from, 32 );
MD5Update( md5ctx, buffer, size1 );
}

View file

@ -10,6 +10,7 @@
#include <user_interface.h> #include <user_interface.h>
#include <ets_sys.h> #include <ets_sys.h>
#include <espconn.h> #include <espconn.h>
#include <esp8266_rom.h>
extern char generic_print_buffer[384]; extern char generic_print_buffer[384];
@ -42,4 +43,8 @@ int ICACHE_FLASH_ATTR ColonsToInts( const char * str, int32_t * vals, int max_q
//as it does stuff with dynamic memory. //as it does stuff with dynamic memory.
void ICACHE_FLASH_ATTR my_base64_encode(const unsigned char *data, size_t input_length, uint8_t * encoded_data ); void ICACHE_FLASH_ATTR my_base64_encode(const unsigned char *data, size_t input_length, uint8_t * encoded_data );
void ICACHE_FLASH_ATTR SafeMD5Update( MD5_CTX * md5ctx, uint8_t*from, uint32_t size1 );
#endif #endif

Binary file not shown.

View file

@ -107,7 +107,7 @@ uint32_t Push( uint32_t offset, const char * file )
} }
int r = sprintf( bufferout, "FW%d:%d:", sendplace, sendsize ); int r = sprintf( bufferout, "FW%d\t%d\t", sendplace, sendsize );
memcpy( bufferout + r, buffer, sendsize ); memcpy( bufferout + r, buffer, sendsize );
printf( "bufferout: %d %d\n", sendplace, sendsize ); printf( "bufferout: %d %d\n", sendplace, sendsize );
@ -224,11 +224,11 @@ int main(int argc, char**argv)
printf( "%s %s\n", md5_f1, md5_f2 ); printf( "%s %s\n", md5_f1, md5_f2 );
//FM[from_address]:[to_address]:[size]:[MD5(key+data)]:[from_address]:[to_address]:[size]:[MD5(key+data)] //FM[from_address]\t[to_address]\t[size]\t[MD5(key+data)]\t[from_address]\t[to_address]\t[size]\t[MD5(key+data)]
char cmd[1024]; char cmd[1024];
sprintf( cmd, "FM%d:%d:%d:%s:%d:%d:%d:%s\n", sprintf( cmd, "FM%d\t%d\t%d\t%s\t%d\t%d\t%d\t%s\n",
0x080000, 0x080000,
0x000000, 0x000000,
fs1, //roundup( fs1 ), fs1, //roundup( fs1 ),

View file

@ -153,7 +153,7 @@ int main(int argc, char**argv)
#endif #endif
resend_times = 0; resend_times = 0;
resend: resend:
r = sprintf( bufferout, "FW%d:%d:", sendplace, sendsize ); r = sprintf( bufferout, "FW%d\t%d\t", sendplace, sendsize );
printf( "bufferout: %d %d %s\n", sendplace, sendsize, bufferout ); printf( "bufferout: %d %d %s\n", sendplace, sendsize, bufferout );
memcpy( bufferout + r, buffer, sendsize ); memcpy( bufferout + r, buffer, sendsize );

View file

@ -38,8 +38,8 @@ void NewFrame()
int i; int i;
HandleFrameInfo(); HandleFrameInfo();
UpdateLinearLEDs(); // UpdateLinearLEDs();
// UpdateAllSameLEDs(); UpdateAllSameLEDs();
SendSPI2812( ledOut, NUM_LIN_LEDS ); SendSPI2812( ledOut, NUM_LIN_LEDS );
} }