mirror of
https://github.com/Valeh2012/PersonalVotingMachine
synced 2025-12-10 02:35:12 +02:00
first commit
This commit is contained in:
0
basic-setup/components/u8g2/tools/buildcpp/OBSOLETE
Normal file
0
basic-setup/components/u8g2/tools/buildcpp/OBSOLETE
Normal file
309
basic-setup/components/u8g2/tools/buildcpp/buildcpp.c
Normal file
309
basic-setup/components/u8g2/tools/buildcpp/buildcpp.c
Normal file
@@ -0,0 +1,309 @@
|
||||
/*
|
||||
OBSOLETE,
|
||||
replaced by codebuild
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define CSVLINELEN (1024*16)
|
||||
|
||||
|
||||
char csvline[CSVLINELEN];
|
||||
char elements[10][CSVLINELEN];
|
||||
|
||||
#define DEVICE elements[0]
|
||||
#define PINSET elements[1]
|
||||
#define CONSTRUCTOR elements[2]
|
||||
|
||||
|
||||
/*
|
||||
copy file from source_file_name to dest_file_name
|
||||
*/
|
||||
int file_copy(const char *source_file_name, const char *dest_file_name)
|
||||
{
|
||||
int ch;
|
||||
FILE *source_fp;
|
||||
FILE *dest_fp;
|
||||
|
||||
source_fp = fopen(source_file_name, "r");
|
||||
dest_fp = fopen(dest_file_name, "w");
|
||||
|
||||
if ( source_fp == NULL || dest_fp == NULL )
|
||||
return 0;
|
||||
|
||||
while( ( ch = fgetc(source_fp) ) != EOF )
|
||||
fputc(ch, dest_fp);
|
||||
|
||||
fclose(source_fp);
|
||||
fclose(dest_fp);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Insert file "insertname" between lines "start_line" and "end_line" of file "filename"
|
||||
*/
|
||||
int insert_into_file(const char *filename, const char *insertname, const char *start_line, const char *end_line)
|
||||
{
|
||||
int ch;
|
||||
static char line[1024*4];
|
||||
const char *tmpname = "tmp.h";
|
||||
FILE *source_fp;
|
||||
FILE *dest_fp;
|
||||
FILE *insert_fp;
|
||||
|
||||
if ( file_copy(filename, tmpname) == 0 )
|
||||
return 0;
|
||||
|
||||
source_fp = fopen(tmpname, "r");
|
||||
dest_fp = fopen(filename, "w");
|
||||
insert_fp = fopen(insertname, "r");
|
||||
|
||||
if ( source_fp == NULL || dest_fp == NULL || insert_fp == NULL )
|
||||
return 0;
|
||||
|
||||
for(;;)
|
||||
{
|
||||
if ( fgets(line, 1024*4, source_fp) == NULL )
|
||||
break;
|
||||
if ( strncmp(line, start_line, strlen(start_line)) == 0 )
|
||||
{
|
||||
fputs(line, dest_fp);
|
||||
|
||||
while( ( ch = fgetc(insert_fp) ) != EOF )
|
||||
fputc(ch, dest_fp);
|
||||
|
||||
fputs("\n", dest_fp);
|
||||
|
||||
for(;;)
|
||||
{
|
||||
if ( fgets(line, 1024*4, source_fp) == NULL )
|
||||
break;
|
||||
if ( strncmp(line, end_line, strlen(end_line)) == 0 )
|
||||
{
|
||||
fputs(line, dest_fp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fputs(line, dest_fp);
|
||||
}
|
||||
}
|
||||
|
||||
fclose(insert_fp);
|
||||
fclose(source_fp);
|
||||
fclose(dest_fp);
|
||||
|
||||
unlink(tmpname);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
class U8X8_SSD1306_128X64_4W_SW_SPI : public U8X8
|
||||
{
|
||||
public:
|
||||
U8X8_SSD1306_128X64_4W_SW_SPI(uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE) : U8X8()
|
||||
{
|
||||
u8x8_Setup_4Wire_SW_SPI(&u8x8, u8x8_d_ssd1306_128x64_noname, clock, data, cs, dc, reset);
|
||||
}
|
||||
};
|
||||
*/
|
||||
|
||||
char *get_args(const char *ps)
|
||||
{
|
||||
static char s[1024];
|
||||
if ( strcmp(ps, "4WSWSPI") == 0 )
|
||||
sprintf(s, "clock, data, cs, dc, reset");
|
||||
else if ( strcmp(ps, "4WHWSPI") == 0 )
|
||||
sprintf(s, "cs, dc, reset");
|
||||
else if ( strcmp(ps, "3WSWSPI") == 0 )
|
||||
sprintf(s, "clock, data, cs, reset");
|
||||
else if ( strcmp(ps, "SSDSWI2C") == 0 )
|
||||
sprintf(s, "clock, data, reset");
|
||||
else if ( strcmp(ps, "6800") == 0 )
|
||||
sprintf(s, "d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset");
|
||||
else if ( strcmp(ps, "8080") == 0 )
|
||||
sprintf(s, "d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset");
|
||||
else
|
||||
sprintf(s, "... unknown pinset ...");
|
||||
return s;
|
||||
}
|
||||
|
||||
void write_u8x8_md(FILE *fp)
|
||||
{
|
||||
fprintf(fp, "| U8X8_%s(", CONSTRUCTOR);
|
||||
fprintf(fp, "%s) |\n", get_args(PINSET));
|
||||
}
|
||||
|
||||
|
||||
void write_class(const char *prefix, FILE *fp)
|
||||
{
|
||||
fprintf(fp, "class %s_%s : public %s {\n", prefix, CONSTRUCTOR, prefix);
|
||||
fprintf(fp, " public: %s_%s(", prefix, CONSTRUCTOR);
|
||||
|
||||
if ( strcmp(PINSET, "4WSWSPI") == 0 )
|
||||
fprintf(fp, "uint8_t clock, uint8_t data, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE");
|
||||
else if ( strcmp(PINSET, "4WHWSPI") == 0 )
|
||||
fprintf(fp, "uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE");
|
||||
else if ( strcmp(PINSET, "3WSWSPI") == 0 )
|
||||
fprintf(fp, "uint8_t clock, uint8_t data, uint8_t cs, uint8_t reset = U8X8_PIN_NONE");
|
||||
else if ( strcmp(PINSET, "SSDSWI2C") == 0 )
|
||||
fprintf(fp, "uint8_t clock, uint8_t data, uint8_t reset = U8X8_PIN_NONE");
|
||||
else if ( strcmp(PINSET, "6800") == 0 )
|
||||
fprintf(fp, "uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE");
|
||||
else if ( strcmp(PINSET, "8080") == 0 )
|
||||
fprintf(fp, "uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7, uint8_t enable, uint8_t cs, uint8_t dc, uint8_t reset = U8X8_PIN_NONE");
|
||||
else
|
||||
fprintf(fp, "... unknown pinset ...");
|
||||
|
||||
|
||||
|
||||
fprintf(fp, ") : %s() {\n", prefix);
|
||||
fprintf(fp, " ");
|
||||
|
||||
if ( strcmp(PINSET, "4WSWSPI") == 0 )
|
||||
fprintf(fp, "u8x8_Setup_4Wire_SW_SPI");
|
||||
else if ( strcmp(PINSET, "4WHWSPI") == 0 )
|
||||
fprintf(fp, "u8x8_Setup_4Wire_HW_SPI");
|
||||
else if ( strcmp(PINSET, "3WSWSPI") == 0 )
|
||||
fprintf(fp, "u8x8_Setup_3Wire_SW_SPI");
|
||||
else if ( strcmp(PINSET, "SSDSWI2C") == 0 )
|
||||
fprintf(fp, "u8x8_Setup_SSD13xx_SW_I2C");
|
||||
else if ( strcmp(PINSET, "6800") == 0 )
|
||||
fprintf(fp, "u8x8_Setup_8Bit_6800");
|
||||
else if ( strcmp(PINSET, "8080") == 0 )
|
||||
fprintf(fp, "u8x8_Setup_8Bit_8080");
|
||||
else
|
||||
fprintf(fp, "... unknown pinset ...");
|
||||
|
||||
|
||||
fprintf(fp, "(getU8x8(), %s", DEVICE);
|
||||
|
||||
fprintf(fp, ", %s", get_args(PINSET));
|
||||
|
||||
/*
|
||||
if ( strcmp(PINSET, "4WSWSPI") == 0 )
|
||||
fprintf(fp, ", clock, data, cs, dc, reset");
|
||||
else if ( strcmp(PINSET, "4WHWSPI") == 0 )
|
||||
fprintf(fp, ", cs, dc, reset");
|
||||
else if ( strcmp(PINSET, "3WSWSPI") == 0 )
|
||||
fprintf(fp, ", clock, data, cs, reset");
|
||||
else if ( strcmp(PINSET, "SSDSWI2C") == 0 )
|
||||
fprintf(fp, ", clock, data, reset");
|
||||
else if ( strcmp(PINSET, "6800") == 0 )
|
||||
fprintf(fp, ", d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset");
|
||||
else if ( strcmp(PINSET, "8080") == 0 )
|
||||
fprintf(fp, ", d0, d1, d2, d3, d4, d5, d6, d7, enable, cs, dc, reset");
|
||||
else
|
||||
fprintf(fp, "... unknown pinset ...");
|
||||
*/
|
||||
|
||||
fprintf(fp, ");\n");
|
||||
|
||||
|
||||
fprintf(fp, " }\n");
|
||||
fprintf(fp, "};\n");
|
||||
|
||||
}
|
||||
|
||||
void readcsv_createu8x8line(char *s)
|
||||
{
|
||||
char *t;
|
||||
int i = 0;
|
||||
t = strtok(s, ",\n\r");
|
||||
while( t != NULL )
|
||||
{
|
||||
while( *t == ' ' || *t == '\t' )
|
||||
t++;
|
||||
//printf("%s\n", t);
|
||||
strcpy(elements[i], t);
|
||||
i++;
|
||||
if ( i >= 10 )
|
||||
break;
|
||||
t = strtok(NULL, ",\n\r");
|
||||
}
|
||||
}
|
||||
|
||||
void readcsv_createu8x8md(const char *name, const char *mdname)
|
||||
{
|
||||
FILE *fp;
|
||||
FILE *md_fp;
|
||||
char *s;
|
||||
fp = fopen(name, "r");
|
||||
md_fp = fopen(mdname, "w");
|
||||
if ( md_fp != NULL )
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
s = fgets(csvline, CSVLINELEN, fp);
|
||||
if ( s == NULL )
|
||||
break;
|
||||
if ( s[0] == '\0' )
|
||||
continue;
|
||||
if ( s[0] == '\r' )
|
||||
continue;
|
||||
if ( s[0] == '\n' )
|
||||
continue;
|
||||
if ( s[0] == '#' )
|
||||
continue;
|
||||
readcsv_createu8x8line(s);
|
||||
write_u8x8_md(md_fp);
|
||||
}
|
||||
fclose(fp);
|
||||
fclose(md_fp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void readcsv_create(const char *prefix, const char *name, const char *ctorname)
|
||||
{
|
||||
FILE *fp;
|
||||
FILE *ctor_fp;
|
||||
char *s;
|
||||
fp = fopen(name, "r");
|
||||
ctor_fp = fopen(ctorname, "w");
|
||||
if ( fp != NULL )
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
s = fgets(csvline, CSVLINELEN, fp);
|
||||
if ( s == NULL )
|
||||
break;
|
||||
if ( s[0] == '\0' )
|
||||
continue;
|
||||
if ( s[0] == '\r' )
|
||||
continue;
|
||||
if ( s[0] == '\n' )
|
||||
continue;
|
||||
if ( s[0] == '#' )
|
||||
continue;
|
||||
readcsv_createu8x8line(s);
|
||||
write_class(prefix, ctor_fp);
|
||||
}
|
||||
fclose(fp);
|
||||
fclose(ctor_fp);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
readcsv_create("U8X8", "display.csv", "ctor.h");
|
||||
|
||||
//insert_into_file("../../cppsrc/U8x8lib.h", "ctor.h", "// constructor list start", "// constructor list end");
|
||||
|
||||
readcsv_create("U8G2", "display.csv", "ctor.h");
|
||||
readcsv_createu8x8md("display.csv", "md");
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
14
basic-setup/components/u8g2/tools/buildcpp/display.csv
Normal file
14
basic-setup/components/u8g2/tools/buildcpp/display.csv
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
# 1. device name
|
||||
# 2. pinset
|
||||
# 3. constructor name w/o prefix,
|
||||
|
||||
u8x8_d_ssd1306_128x64_noname, 4WSWSPI, SSD1306_128X64_4W_SW_SPI
|
||||
u8x8_d_ssd1306_128x64_noname, 4WHWSPI, SSD1306_128X64_4W_HW_SPI
|
||||
u8x8_d_ssd1306_128x64_noname, 3WSWSPI, SSD1306_128X64_3W_SW_SPI
|
||||
u8x8_d_ssd1306_128x64_noname, SSDSWI2C, SSD1306_128X64_SW_I2C
|
||||
u8x8_d_ssd1306_128x64_noname, 6800, SSD1306_128X64_6800
|
||||
u8x8_d_ssd1306_128x64_noname, 8080, SSD1306_128X64_8080
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user