summaryrefslogtreecommitdiffstats
path: root/opgui.c
diff options
context:
space:
mode:
authorAttila Veghelyi <works@veghelyiattila.hu>2024-01-30 19:24:17 +0100
committerAttila Veghelyi <works@veghelyiattila.hu>2024-01-30 20:20:09 +0100
commit5df9421eb28836e72d112da635fdabbc59ad7185 (patch)
tree2620ae1d9f380a50ecede399b3387a93b0c09763 /opgui.c
parent816b38e07651bfd64acdc53523b92791848ce5f0 (diff)
downloadOpenProgrammer-5df9421eb28836e72d112da635fdabbc59ad7185.tar.gz
OpenProgrammer-5df9421eb28836e72d112da635fdabbc59ad7185.zip
Follow version 0.12.2
Diffstat (limited to 'opgui.c')
-rw-r--r--opgui.c50
1 files changed, 37 insertions, 13 deletions
diff --git a/opgui.c b/opgui.c
index 8340808..a6c550e 100644
--- a/opgui.c
+++ b/opgui.c
@@ -252,7 +252,7 @@ void info(GtkWidget *widget,GtkWidget *window)
//"authors","Alberto Maccioni",NULL,
"comments", "A graphical interface for the Open Programmer",
"copyright",
- "Copyright (C) Alberto Maccioni 2009-2022\n\n"
+ "Copyright (C) Alberto Maccioni 2009-2023\n\n"
"This program is free software; you can \n"
"redistribute it and/or modify it under \n"
"the terms of the GNU General Public License \n"
@@ -649,8 +649,6 @@ void WriteATfuseLowLF(GtkWidget *widget,GtkWidget *window){
void onDevSel_Changed(GtkWidget *widget,GtkWidget *window)
{
struct DevInfo info;
- char str2[256],str3[64],strF[32];
- double x;
GetSelectedDevice();
if (strlen(dev) == 0) return; // None selected
info=GetDevInfo(dev);
@@ -764,6 +762,16 @@ int sortIterCompareFunc(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpo
}
return ret;
}
+
+
+#ifndef strupr
+char* strupr( char* s ){
+ char* p = s;
+ while (*p = toupper( *p )) p++;
+ return s;
+}
+#endif
+
///
///Add devices to the device ListStore (which may not have been created)
///groupFilter: add devices in this group (-1 for all)
@@ -790,6 +798,8 @@ void AddDevices(enum group_t groupFilter, const char *textFilter) {
else gtk_list_store_clear(devStore);
int i,j=0;
char *devices=0,*tok;
+ char textFilterU[32];
+ strupr(strncpy(textFilterU,textFilter,32));
for(i=0;i<NDEVLIST;i++) {
if(devices) free(devices);
devices=malloc(strlen(DEVLIST[i].device)+1);
@@ -800,7 +810,7 @@ void AddDevices(enum group_t groupFilter, const char *textFilter) {
//info.device=malloc(strlen(tok)+1);
//strcpy(info.device,tok);
info.group=nameToGroup(tok);
- if(info.group!=-1&&(!textFilter || strlen(textFilter) == 0 || strstr(tok, textFilter)) &&
+ if(info.group!=-1&&(!textFilter || strlen(textFilter) == 0 || strstr(strupr(tok), textFilterU)) &&
(groupFilter == -1 || info.group == groupFilter)) {
gtk_list_store_insert_with_values(devStore, NULL, -1,
DEVICE_ID_COLUMN, j++,
@@ -856,8 +866,6 @@ void IOchanged(GtkWidget *widget,GtkWidget *window)
int i,j=0;
int trisa=1,trisb=0,trisc=0x30,latac=0,latb=0;
int port=0,z;
- //char str[128]="IO:";
- char s2[64];
str[0]=0;
for(i=0;i<sizeof(ioButtons)/sizeof(ioButtons[0]);i++){
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ioButtons[i].r_0))){
@@ -1375,7 +1383,11 @@ void ProgID()
else if(HwID==2) PrintMessage(" (18F2450)\r\n\r\n");
else if(HwID==3) PrintMessage(" (18F2458/2553)\r\n\r\n");
else if(HwID==4) PrintMessage(" (18F25K50)\r\n\r\n");
+ else if(HwID==5) PrintMessage(" (18F25K50 all-in-one variant)\r\n\r\n");
else PrintMessage(" (?)\r\n\r\n");
+ // Disable 3.3V check and hide the option for all-in-one board. Enable and show for others
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b_V33check), HwID==5 ? TRUE : FALSE);
+ gtk_widget_set_visible(GTK_WIDGET(b_V33check), HwID==5 ? FALSE : TRUE);
}
///
///Check if a 3.3V regulator is present
@@ -1418,13 +1430,24 @@ int CheckS1()
int i,j=0;
bufferU[j++]=READ_RAM;
bufferU[j++]=0x0F;
+ if (HwID==5) { //all-in-one board
+ bufferU[j++]=0x80; // Read PORTA
+ }
+ else { //std board
bufferU[j++]=0x84; //READ PORTE
+ }
bufferU[j++]=FLUSH;
for(;j<DIMBUF;j++) bufferU[j]=0x0;
PacketIO(5);
for(j=0;j<DIMBUF-3&&bufferI[j]!=READ_RAM;j++);
+ if (HwID==5) { //all-in-one board
+ i=bufferI[j+3]&0x80; //i=A7
+ return i?1:0; //A7=1 when switch pressed (active high)
+ }
+ else { //std board
i=bufferI[j+3]&0x8; //i=E3
- return i?0:1; //S1 open -> E3=1
+ return i?0:1; //S1 open -> E3=1 (active low)
+ }
}
///
///Execute hardware test
@@ -1679,7 +1702,6 @@ void PacketIO(double delay){
int main( int argc, char *argv[])
{
//int langID=GetUserDefaultLangID();
- DWORD t0=GetTickCount();
FILE *f;
gchar *homedir,*config_dir,*fname=0;
char lang[32]="";
@@ -1724,7 +1746,6 @@ int main( int argc, char *argv[])
opterr = 0;
int option_index = 0;
int help=0,command=0,i,j;
- char c;
struct option long_options[] =
{
{"?", no_argument, &help, 1},
@@ -1747,7 +1768,7 @@ int main( int argc, char *argv[])
char* langid=0;
i=0;
if(lang[0]){ //explicit language selection
- if(lang[0]=='i'&&langid[1]=='t'){ //built-in
+ if(lang[0]=='i'&&lang[1]=='t'){ //built-in
strings=strings_it;
i=1;
}
@@ -1852,7 +1873,8 @@ int main( int argc, char *argv[])
dataBuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(data));
//------device tab-------------
gtk_label_set_text(GTK_LABEL(GTK_WIDGET(gtk_builder_get_object(builder,"DEVICE_L"))),strings[I_Dev]); //"Device"
- gtk_label_set_text(GTK_LABEL(GTK_WIDGET(gtk_builder_get_object(builder,"TYPE_L"))),strings[I_Type]); //"Type"
+ gtk_label_set_text(GTK_LABEL(GTK_WIDGET(gtk_builder_get_object(builder,"TYPE_L"))),strings[I_TypeFilt]); //"Filter by type"
+ gtk_label_set_text(GTK_LABEL(GTK_WIDGET(gtk_builder_get_object(builder,"DEV_SRC_L"))),strings[I_Filt]); //"Filter"
devTypeCombo=GTK_WIDGET(gtk_builder_get_object(builder,"TYPE_C"));
g_signal_connect(G_OBJECT(devTypeCombo),"changed",G_CALLBACK(FilterDevType),NULL);
devFiltEntry=GTK_WIDGET(gtk_builder_get_object(builder,"DEV_SRC_E"));
@@ -1861,7 +1883,9 @@ int main( int argc, char *argv[])
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(devTree),
-1, strings[I_Dev], gtk_cell_renderer_text_new(), "text", DEVICE_NAME_COLUMN, NULL);
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(devTree),
- -1, strings[I_Type], gtk_cell_renderer_text_new(), "text", DEVICE_GROUP_COLUMN, NULL);
+ -1, strings[I_Type], gtk_cell_renderer_text_new(), "text", DEVICE_GROUP_COLUMN, NULL); //"Type"
+ gtk_tree_view_column_set_fixed_width(gtk_tree_view_get_column(GTK_TREE_VIEW(devTree),0),125);
+ gtk_tree_view_column_set_fixed_width(gtk_tree_view_get_column(GTK_TREE_VIEW(devTree),1),125);
// AddDevices() gets called when an entry in devTypeCombo is selected during init
devFrame = GTK_WIDGET(gtk_builder_get_object(builder,"DEVICE_NAME"));
devinfo = GTK_WIDGET(gtk_builder_get_object(builder,"DEV_INFO"));
@@ -2291,7 +2315,7 @@ int FindDevice(int vid,int pid){
typedef BOOLEAN (__stdcall*SETREPORT) (IN HANDLE HidDeviceObject, IN PVOID ReportBuffer, IN ULONG ReportBufferLength);
typedef BOOLEAN (__stdcall*GETMANUFACTURERSTRING) (IN HANDLE HidDeviceObject, OUT PVOID ReportBuffer, IN ULONG ReportBufferLength);
typedef BOOLEAN (__stdcall*GETPRODUCTSTRING) (IN HANDLE HidDeviceObject, OUT PVOID ReportBuffer, IN ULONG ReportBufferLength);
- typedef BOOLEAN (__stdcall*GETINDEXEDSTRING) (IN HANDLE HidDeviceObject, IN ULONG StringIndex, OUT PVOID ReportBuffer, IN ULONG ReportBufferLength);
+// typedef BOOLEAN (__stdcall*GETINDEXEDSTRING) (IN HANDLE HidDeviceObject, IN ULONG StringIndex, OUT PVOID ReportBuffer, IN ULONG ReportBufferLength);
HIDD_ATTRIBUTES Attributes;
SP_DEVICE_INTERFACE_DATA devInfoData;
int LastDevice = FALSE;