6
6
// So I put + in the sense that it was improved one by one based on Original Firmware.
7
7
// This firmware has been gradually changed based on the original firmware created by Farhan, Jack, Jerry and others.
8
8
9
- #define FIRMWARE_VERSION_INFO F (" +v1.072 " )
9
+ #define FIRMWARE_VERSION_INFO F (" +v1.073 " )
10
10
#define FIRMWARE_VERSION_NUM 0x02 // 1st Complete Project : 1 (Version 1.061), 2st Project : 2
11
11
12
12
/* *
@@ -182,30 +182,10 @@ byte line2DisplayStatus = 0; //0:Clear, 1 : menu, 1: DisplayFrom Idle,
182
182
char lcdMeter[17 ];
183
183
byte sMeterLevels [9 ];
184
184
185
- int KeyValues[16 ][2 ];
186
- /* = {
187
- {1023, 1025}, //1
188
- {707, 711}, //5
189
- {570, 574}, //9
190
- {493, 500}, //13
191
-
192
- {932, 936}, //2
193
- {860, 864}, //3
194
- {800, 805}, //4
195
-
196
- {672, 676}, //6
197
- {642, 646}, //7
198
- {616, 620}, //8
199
-
200
- {552, 556}, //10
201
- {535, 539}, //11
202
- {520, 524}, //12
203
-
204
- {438, 442}, //14
205
- {403, 407}, //15
206
- {378, 382} //16
207
- };
208
- */
185
+ byte I2C_LCD_MASTER_ADDRESS; // 0x27 //if Set I2C Address by uBITX Manager, read from EEProm
186
+ byte I2C_LCD_SECOND_ADDRESS; // only using Dual LCD Mode
187
+
188
+ byte KeyValues[16 ][3 ];
209
189
210
190
byte isIFShift = 0 ; // 1 = ifShift, 2 extend
211
191
int ifShiftValue = 0 ; //
@@ -422,7 +402,7 @@ void setFrequency(unsigned long f){
422
402
// Offset Frequency : 30Mhz and current Frequncy is 14.074 => 34.074Mhz
423
403
moveFrequency = (f % 10000000 );
424
404
}
425
- else if (sdrOption == 3 ) // Khzz move
405
+ else if (sdrOption == 3 ) // Khz move
426
406
{
427
407
// Offset Frequency + Khz,
428
408
// Example : Offset Frequency : 30Mhz and current Frequncy is 7.080 => 30.080Mhz
@@ -454,31 +434,6 @@ void setFrequency(unsigned long f){
454
434
}
455
435
}
456
436
457
- /*
458
- if (cwMode == 0)
459
- {
460
- if (isUSB){
461
- si5351bx_setfreq(2, SECOND_OSC_USB - appliedCarrier + f);
462
- si5351bx_setfreq(1, SECOND_OSC_USB);
463
- }
464
- else{
465
- si5351bx_setfreq(2, SECOND_OSC_LSB + appliedCarrier + f);
466
- si5351bx_setfreq(1, SECOND_OSC_LSB);
467
- }
468
- }
469
- else
470
- {
471
- if (cwMode == 1){ //CWL
472
- si5351bx_setfreq(2, SECOND_OSC_LSB + appliedCarrier + f);
473
- si5351bx_setfreq(1, SECOND_OSC_LSB);
474
- }
475
- else{ //CWU
476
- si5351bx_setfreq(2, SECOND_OSC_USB - appliedCarrier + f);
477
- si5351bx_setfreq(1, SECOND_OSC_USB);
478
- }
479
- }
480
- */
481
-
482
437
frequency = f;
483
438
}
484
439
@@ -630,6 +585,8 @@ void checkPTT(){
630
585
}
631
586
#ifdef EXTEND_KEY_GROUP1
632
587
void checkButton (){
588
+ char currentBandIndex = -1 ;
589
+
633
590
// only if the button is pressed
634
591
int keyStatus = getBtnStatus ();
635
592
if (keyStatus == -1 )
@@ -642,8 +599,69 @@ void checkButton(){
642
599
643
600
if (keyStatus == FKEY_PRESS) // Menu Key
644
601
doMenu ();
645
- else if (keyStatus <= FKEY_STEP ) // EXTEND KEY GROUP #1
602
+ else if (keyStatus <= FKEY_TYPE_MAX ) // EXTEND KEY GROUP #1
646
603
{
604
+
605
+ switch (keyStatus)
606
+ {
607
+ case FKEY_MODE :
608
+ if (cwMode == 1 )
609
+ {
610
+ cwMode = 2 ;
611
+ }
612
+ else if (cwMode == 2 )
613
+ {
614
+ cwMode = 0 ;
615
+ isUSB = 0 ;
616
+ }
617
+ else if (isUSB == 0 )
618
+ {
619
+ isUSB = 1 ;
620
+ }
621
+ else
622
+ {
623
+ cwMode = 1 ;
624
+ }
625
+ break ;
626
+ case FKEY_BANDUP :
627
+ case FKEY_BANDDOWN :
628
+ // Save Band Information
629
+ if (tuneTXType == 2 || tuneTXType == 3 || tuneTXType == 102 || tuneTXType == 103 ) { // only ham band move
630
+ currentBandIndex = getIndexHambanBbyFreq (frequency);
631
+
632
+ if (currentBandIndex >= 0 ) {
633
+ saveBandFreqByIndex (frequency, modeToByte (), currentBandIndex);
634
+ }
635
+ }
636
+ setNextHamBandFreq (frequency, keyStatus == FKEY_BANDDOWN ? -1 : 1 ); // Prior Band
637
+ break ;
638
+
639
+ case FKEY_STEP :
640
+ if (++tuneStepIndex > 5 )
641
+ tuneStepIndex = 1 ;
642
+
643
+ EEPROM.put (TUNING_STEP, tuneStepIndex);
644
+ printLine2ClearAndUpdate ();
645
+ break ;
646
+
647
+ case FKEY_VFOCHANGE :
648
+ menuVfoToggle (1 ); // Vfo Toggle
649
+ break ;
650
+
651
+ case FKEY_SPLIT :
652
+ menuSplitOnOff (1 );
653
+ break ;
654
+ case FKEY_TXOFF:
655
+ menuTxOnOff (1 , 0x01 );
656
+ break ;
657
+ case FKEY_SDRMODE :
658
+ menuSDROnOff (1 );
659
+ break ;
660
+ case FKEY_RIT :
661
+ menuRitToggle (1 );
662
+ break ;
663
+ }
664
+ /*
647
665
if (keyStatus == FKEY_MODE) //Press Mode Key
648
666
{
649
667
if (cwMode == 1)
@@ -664,10 +682,6 @@ void checkButton(){
664
682
cwMode = 1;
665
683
}
666
684
}
667
- // else if (keyStatus == FKEY_BANDDOWN) //Press Mode Key
668
- // {
669
- // setNextHamBandFreq(frequency, -1); //Prior Band
670
- // }
671
685
else if (keyStatus == FKEY_BANDUP || keyStatus == FKEY_BANDDOWN) //Press Mode Key
672
686
{
673
687
@@ -692,6 +706,28 @@ void checkButton(){
692
706
EEPROM.put(TUNING_STEP, tuneStepIndex);
693
707
printLine2ClearAndUpdate();
694
708
}
709
+
710
+ else if (keyStatus == FKEY_VFOCHANGE)
711
+ {
712
+ menuVfoToggle(1); //Vfo Toggle
713
+ }
714
+ else if (keyStatus == FKEY_SPLIT)
715
+ {
716
+ menuSplitOnOff(1);
717
+ }
718
+ else if (keyStatus == FKEY_TXOFF)
719
+ {
720
+ menuTxOnOff(1, 0x01);
721
+ }
722
+ else if (keyStatus == FKEY_SDRMODE)
723
+ {
724
+ menuSDROnOff(1);
725
+ }
726
+ else if (keyStatus == FKEY_RIT)
727
+ {
728
+ menuRitToggle(1);
729
+ }
730
+ */
695
731
696
732
FrequencyToVFO (1 );
697
733
SetCarrierFreq ();
@@ -927,7 +963,6 @@ void initSettings(){
927
963
else
928
964
keyerControl |= IAMBICB;
929
965
}
930
-
931
966
932
967
EEPROM.get (COMMON_OPTION0, commonOption0);
933
968
EEPROM.get (DISPLAY_OPTION1, displayOption1);
@@ -939,8 +974,9 @@ void initSettings(){
939
974
940
975
// KeyValues
941
976
for (byte i = 0 ; i < 16 ; i++) {
942
- KeyValues[i][0 ] = EEPROM.read (EXTENDED_KEY_RANGE + (i * 2 ));
943
- KeyValues[i][1 ] = EEPROM.read (EXTENDED_KEY_RANGE + (i * 2 ) + 1 );
977
+ KeyValues[i][0 ] = EEPROM.read (EXTENDED_KEY_RANGE + (i * 3 )); // RANGE : Start Value
978
+ KeyValues[i][1 ] = EEPROM.read (EXTENDED_KEY_RANGE + (i * 3 ) + 1 ); // RANGE : End Value
979
+ KeyValues[i][2 ] = EEPROM.read (EXTENDED_KEY_RANGE + (i * 3 ) + 2 ); // KEY TYPE
944
980
}
945
981
946
982
// User callsign information
@@ -1190,6 +1226,19 @@ void setup()
1190
1226
//while(1);
1191
1227
//end section of test
1192
1228
*/
1229
+
1230
+ // Load I2C LCD Address for I2C LCD
1231
+ // I2C LCD Parametere
1232
+ #ifdef USE_I2C_LCD
1233
+ EEPROM.get (I2C_LCD_MASTER, I2C_LCD_MASTER_ADDRESS);
1234
+ EEPROM.get (I2C_LCD_SECOND, I2C_LCD_SECOND_ADDRESS);
1235
+
1236
+ if (I2C_LCD_MASTER_ADDRESS < 0x10 || I2C_LCD_MASTER_ADDRESS > 0xF0 )
1237
+ I2C_LCD_MASTER_ADDRESS = I2C_LCD_MASTER_ADDRESS_DEFAULT;
1238
+
1239
+ if (I2C_LCD_SECOND_ADDRESS < 0x10 || I2C_LCD_SECOND_ADDRESS > 0xF0 )
1240
+ I2C_LCD_SECOND_ADDRESS = I2C_LCD_SECOND_ADDRESS_DEFAULT;
1241
+ #endif
1193
1242
1194
1243
// Serial.begin(9600);
1195
1244
LCD_Init ();
0 commit comments