UCTRONICS / U6143_ssd1306

70 stars 88 forks source link

Multiple Disks and Custom Info #25

Open ILL-DIE-TRYING opened 2 years ago

ILL-DIE-TRYING commented 2 years ago

I don't know C very well but have enough scripting experience to see what is basically happening.

I have multiple disks. I just copied the sd card diskspace function in ssd1306_i2c.c, I renamed it LCD_DisplayVarMemory, and changed the target to /var.

/VAR Drive Block Of Code

void LCD_DisplayVarMemory(void) { char usedsize_GB[10]={0}; char totalsize_GB[10]={0}; unsigned int MemSize=0; unsigned int size=0; struct statfs diskInfo; statfs("/var",&diskInfo); OLED_ClearLint(2,4); OLED_DrawPartBMP(0,2,128,4,BMP,2);
unsigned long long blocksize = diskInfo.f_bsize;// The number of bytes per block unsigned long long totalsize = blocksize*diskInfo.f_blocks;//Total number of bytes
MemSize=(unsigned int)(totalsize>>30); snprintf(totalsize_GB,7,"%d",MemSize); if(MemSize>0&&MemSize<10) { OLED_ShowString(106,3,totalsize_GB,8); } else if(MemSize>=10&&MemSize<100) { OLED_ShowString(98,3,totalsize_GB,8);
} else { OLED_ShowString(90,3,totalsize_GB,8); }

unsigned long long freesize = blocksize*diskInfo.f_bfree; //Now let's figure out how much space we have left size=freesize>>30; size=MemSize-size; snprintf(usedsize_GB,7,"%d",size); if(size>0&&size<10) { OLED_ShowString(65,3,usedsize_GB,8); } else if(size>=10&&size<100) { OLED_ShowString(58,3,usedsize_GB,8);
} else { OLED_ShowString(55,3,usedsize_GB,8); } }

I also had to add a few lines to LCD_Display like so:

original code

case 2: LCD_DisplaySdMemory(); break;

new code added after case 2 break;

case 3: LCD_DisplayVarMemory(); break;

fixing the rotation to view the new drive info

I also had to change display.c line 29 from if(symbol==3) to if(symbol==4) for the new drive to be used in the rotation. Adding a third drive (or anything else) will have to change it to ==5

It seems to work fine, my only issue is the label for it. The label shows a little card and says "disk"

I would like to change the label from "disk" to "var" for the var drive and I also have another drive to add that holds backups and would like that one to have the label set to "backups" or even just "BACK' or something.

For the life of me I cannot find where to set this label. Any help with icons and labels by chance?

Anything I may have missed?

I noticed in ssd1306_i2c.h on line 36 there is "void LCD_DisplaySdMemory(void);" Do I need to do the same for my extra drives/info? "void LCD_DisplayVarMemory(void);"

Other things I would like to add (any help would be greatly appreciated)

add hostname into the rotation add the ubuntu release version add kernel version add number of packages needed updating/upgrading from apt

Thanks a bunch!