@@ -217,6 +217,7 @@ bool COLED::open()
217
217
}
218
218
219
219
// init done
220
+ m_display.setTextWrap (false ); // disable text wrap as default
220
221
m_display.clearDisplay (); // clears the screen buffer
221
222
m_display.display (); // display it (clear display)
222
223
@@ -271,8 +272,10 @@ void COLED::setErrorInt(const char* text)
271
272
m_display.clearDisplay ();
272
273
OLED_statusbar ();
273
274
275
+ m_display.setTextWrap (true ); // text wrap temorally enable
274
276
m_display.setCursor (0 ,OLED_LINE1);
275
277
m_display.printf (" %s\n " ,text);
278
+ m_display.setTextWrap (false );
276
279
277
280
m_display.display ();
278
281
}
@@ -360,6 +363,16 @@ void COLED::clearDStarInt()
360
363
}
361
364
362
365
void COLED::writeDMRInt (unsigned int slotNo,const std::string& src,bool group,const std::string& dst,const char * type)
366
+ {
367
+ CUserDBentry tmp;
368
+
369
+ tmp.set (keyCALLSIGN, src);
370
+ writeDMRIntEx (slotNo, tmp, group, dst, type);
371
+ }
372
+
373
+ #define CALLandNAME (u ) ((u).get(keyCALLSIGN) + " " + (u).get(keyFIRST_NAME))
374
+
375
+ int COLED::writeDMRIntEx (unsigned int slotNo, const class CUserDBentry & src, bool group, const std::string& dst, const char * type)
363
376
{
364
377
365
378
if (m_mode != MODE_DMR) {
@@ -368,48 +381,55 @@ void COLED::writeDMRInt(unsigned int slotNo,const std::string& src,bool group,co
368
381
clearDMRInt (slotNo);
369
382
}
370
383
// if both slots, use lines 2-3 for slot 1, lines 4-5 for slot 2
371
- // if single slot, use lines 3-4
384
+ // if single slot, use lines 2-3
372
385
if ( m_slot1Enabled && m_slot2Enabled ) {
373
386
374
387
if (slotNo == 1U ) {
375
388
m_display.fillRect (0 ,OLED_LINE2,m_display.width (),40 ,BLACK);
376
389
m_display.setCursor (0 ,OLED_LINE2);
377
- m_display.printf (" %s" ,src.c_str ());
390
+ m_display.printf (" %s" ,CALLandNAME ( src) .c_str ());
378
391
m_display.setCursor (0 ,OLED_LINE3);
379
392
m_display.printf (" Slot: %i %s %s%s" ,slotNo,type,group ? " TG: " : " " ,dst.c_str ());
380
393
}
381
394
else
382
395
{
383
396
m_display.fillRect (0 ,OLED_LINE4,m_display.width (),40 ,BLACK);
384
397
m_display.setCursor (0 ,OLED_LINE4);
385
- m_display.printf (" %s" ,src.c_str ());
398
+ m_display.printf (" %s" ,CALLandNAME ( src) .c_str ());
386
399
m_display.setCursor (0 ,OLED_LINE5);
387
400
m_display.printf (" Slot: %i %s %s%s" ,slotNo,type,group ? " TG: " : " " ,dst.c_str ());
388
401
}
389
402
403
+ m_display.fillRect (0 ,OLED_LINE6,m_display.width (),20 ,BLACK);
404
+ m_display.setCursor (0 ,OLED_LINE6);
405
+ m_display.printf (" %s" ,m_ipaddress.c_str ());
390
406
}
391
407
else
392
408
{
393
- m_display.fillRect (0 ,OLED_LINE3,m_display.width (),20 ,BLACK);
409
+ m_display.fillRect (0 ,OLED_LINE2,m_display.width (),m_display.height (),BLACK);
410
+ m_display.setCursor (0 ,OLED_LINE2);
411
+ m_display.printf (" %s" ,CALLandNAME (src).c_str ());
394
412
m_display.setCursor (0 ,OLED_LINE3);
395
- m_display.printf (" %s" ,src.c_str ());
396
- m_display.setCursor (0 ,OLED_LINE4);
397
413
m_display.printf (" Slot: %i %s %s%s" ,slotNo,type,group ? " TG: " : " " ,dst.c_str ());
414
+ m_display.setCursor (0 ,OLED_LINE4);
415
+ m_display.printf (" %s" ,src.get (keyCITY).c_str ());
416
+ m_display.setCursor (0 ,OLED_LINE5);
417
+ m_display.printf (" %s" ,src.get (keySTATE).c_str ());
418
+ m_display.setCursor (0 ,OLED_LINE6);
419
+ m_display.printf (" %s" ,src.get (keyCOUNTRY).c_str ());
398
420
}
399
421
400
- m_display.fillRect (0 ,OLED_LINE6,m_display.width (),20 ,BLACK);
401
- m_display.setCursor (0 ,OLED_LINE6);
402
- m_display.printf (" %s" ,m_ipaddress.c_str ());
403
-
404
422
OLED_statusbar ();
405
423
m_display.display ();
406
424
425
+ // must be 0, to avoid calling writeDMRInt() from CDisplay::writeDMR()
426
+ return 0 ;
407
427
}
408
428
409
429
void COLED::clearDMRInt (unsigned int slotNo)
410
430
{
411
431
// if both slots, use lines 2-3 for slot 1, lines 4-5 for slot 2
412
- // if single slot, use lines 3-4
432
+ // if single slot, use lines 2-3
413
433
if ( m_slot1Enabled && m_slot2Enabled ){
414
434
if (slotNo == 1U ) {
415
435
m_display.fillRect (0 , OLED_LINE3, m_display.width (), 40 , BLACK);
@@ -423,8 +443,8 @@ void COLED::clearDMRInt(unsigned int slotNo)
423
443
}
424
444
}
425
445
else {
426
- m_display.fillRect (0 , OLED_LINE4 , m_display.width (), 40 , BLACK);
427
- m_display.setCursor (0 ,OLED_LINE4 );
446
+ m_display.fillRect (0 , OLED_LINE2 , m_display.width (), m_display. height () , BLACK);
447
+ m_display.setCursor (0 ,OLED_LINE3 );
428
448
m_display.printf (" Slot: %i Listening" ,slotNo);
429
449
}
430
450
@@ -497,28 +517,47 @@ void COLED::clearP25Int()
497
517
}
498
518
499
519
void COLED::writeNXDNInt (const char * source, bool group, unsigned int dest, const char * type)
520
+ {
521
+ CUserDBentry tmp;
522
+
523
+ tmp.set (keyCALLSIGN, source);
524
+ writeNXDNIntEx (tmp, group, dest, type);
525
+ }
526
+
527
+ int COLED::writeNXDNIntEx (const class CUserDBentry & source, bool group, unsigned int dest, const char * type)
500
528
{
501
529
m_mode = MODE_NXDN;
502
530
503
531
m_display.clearDisplay ();
504
532
m_display.fillRect (0 , OLED_LINE2, m_display.width (), m_display.height (), BLACK);
505
533
534
+ m_display.setCursor (0 ,OLED_LINE2);
535
+ m_display.printf (" %s %s" , type, CALLandNAME (source).c_str ());
536
+
506
537
m_display.setCursor (0 ,OLED_LINE3);
507
- m_display.printf (" %s %.10s" , type, source);
538
+ m_display.printf (" %s%u" , group ? " TG" : " " , dest);
539
+
540
+ m_display.setCursor (0 ,OLED_LINE4);
541
+ m_display.printf (" %s" ,source.get (keyCITY).c_str ());
508
542
509
543
m_display.setCursor (0 ,OLED_LINE5);
510
- m_display.printf (" %s%u" , group ? " TG" : " " , dest);
544
+ m_display.printf (" %s" ,source.get (keySTATE).c_str ());
545
+
546
+ m_display.setCursor (0 ,OLED_LINE6);
547
+ m_display.printf (" %s" ,source.get (keyCOUNTRY).c_str ());
511
548
512
549
OLED_statusbar ();
513
550
m_display.display ();
514
551
552
+ // must be 0, to avoid calling writeNXDNInt() from CDisplay::writeNXDN()
553
+ return 0 ;
515
554
}
516
555
517
556
void COLED::clearNXDNInt ()
518
557
{
519
558
m_display.fillRect (0 , OLED_LINE2, m_display.width (), m_display.height (), BLACK);
520
559
521
- m_display.setCursor (40 ,OLED_LINE4 );
560
+ m_display.setCursor (40 ,OLED_LINE3 );
522
561
m_display.print (" Listening" );
523
562
524
563
m_display.setCursor (0 ,OLED_LINE6);
@@ -537,8 +576,10 @@ void COLED::writePOCSAGInt(uint32_t ric, const std::string& message)
537
576
m_display.setCursor (0 ,OLED_LINE3);
538
577
m_display.printf (" RIC: %u" , ric);
539
578
579
+ m_display.setTextWrap (true ); // text wrap temorally enable
540
580
m_display.setCursor (0 ,OLED_LINE5);
541
581
m_display.printf (" MSG: %s" , message.c_str ());
582
+ m_display.setTextWrap (false );
542
583
543
584
OLED_statusbar ();
544
585
m_display.display ();
0 commit comments