Revision 1678f270 modules/PowerManagement_1-1/module.c

View differences:

modules/PowerManagement_1-1/module.c
1 1
/*
2 2
AMiRo-OS is an operating system designed for the Autonomous Mini Robot (AMiRo) platform.
3
Copyright (C) 2016..2018  Thomas Schöpping et al.
3
Copyright (C) 2016..2019  Thomas Schöpping et al.
4 4

  
5 5
This program is free software: you can redistribute it and/or modify
6 6
it under the terms of the GNU General Public License as published by
......
65 65
  /* btr  */ CAN_BTR_SJW(1) | CAN_BTR_TS2(3) | CAN_BTR_TS1(15) | CAN_BTR_BRP(1),
66 66
};
67 67

  
68
I2CConfig moduleHalI2cProxPm18Pm33GaugeRearConfig = {
68
I2CConfig moduleHalI2cSrPm18Pm33GaugeRearConfig = {
69 69
  /* I²C mode   */ OPMODE_I2C,
70 70
  /* frequency  */ 400000, // TODO: replace with some macro (-> ChibiOS/HAL)
71 71
  /* duty cycle */ FAST_DUTY_CYCLE_2,
72 72
};
73 73

  
74
I2CConfig moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig = {
74
I2CConfig moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig = {
75 75
  /* I²C mode   */ OPMODE_I2C,
76 76
  /* frequency  */ 400000, // TODO: replace with some macro (-> ChibiOS/HAL)
77 77
  /* duty cycle */ FAST_DUTY_CYCLE_2,
......
149 149
  /* GPIO */ &_gpioIrInt1,
150 150
  /* meta */ {
151 151
    /* direction      */ APAL_GPIO_DIRECTION_INPUT,
152
#if (BOARD_SENSORRING == BOARD_PROXIMITYSENSOR)
152 153
    /* active state   */ (VCNL4020_LLD_INT_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW,
153 154
    /* interrupt edge */ VCNL4020_LLD_INT_EDGE,
155
#elif (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L0X)
156
    /* active state   */ (PCAL6524_LLD_INT_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW,
157
    /* interrupt edge */ PCAL6524_LLD_INT_EDGE,
158
#elif (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L1X)
159
    /* active state   */ (PCAL6524_LLD_INT_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW,
160
    /* interrupt edge */ PCAL6524_LLD_INT_EDGE,
161
#else
162
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
163
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
164
#endif
154 165
  },
155 166
};
156 167

  
......
341 352
  /* GPIO */ &_gpioIrInt2,
342 353
  /* meta */ {
343 354
    /* direction      */ APAL_GPIO_DIRECTION_INPUT,
355
#if (BOARD_SENSORRING == BOARD_PROXIMITYSENSOR)
344 356
    /* active state   */ (VCNL4020_LLD_INT_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW,
345 357
    /* interrupt edge */ VCNL4020_LLD_INT_EDGE,
358
#elif (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L0X)
359
    /* active state   */ (PCAL6524_LLD_INT_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW,
360
    /* interrupt edge */ PCAL6524_LLD_INT_EDGE,
361
#elif (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L1X)
362
    /* active state   */ (PCAL6524_LLD_INT_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW,
363
    /* interrupt edge */ PCAL6524_LLD_INT_EDGE,
364
#else
365
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
366
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
367
#endif
346 368
  },
347 369
};
348 370

  
......
357 379
  /* GPIO */ &_gpioTouchInt,
358 380
  /* meta */ {
359 381
    /* direction      */ APAL_GPIO_DIRECTION_INPUT,
382
#if (BOARD_SENSORRING == BOARD_PROXIMITYSENSOR)
360 383
    /* active state   */ (MPR121_LLD_INT_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW,
361 384
    /* interrupt edge */ MPR121_LLD_INT_EDGE,
385
#elif (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L0X)
386
    /* active state   */ (AT42QT1050_LLD_INT_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW,
387
    /* interrupt edge */ AT42QT1050_LLD_INT_EDGE,
388
#elif (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L1X)
389
    /* active state   */ (AT42QT1050_LLD_INT_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW,
390
    /* interrupt edge */ AT42QT1050_LLD_INT_EDGE,
391
#else
392
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
393
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
394
#endif
362 395
  },
363 396
};
364 397

  
......
520 553
#endif
521 554

  
522 555
/** @} */
523
#if (AMIROOS_CFG_SSSP_ENABLE == true)
556

  
524 557
/*===========================================================================*/
525 558
/**
526 559
 * @name Startup Shutdown Synchronization Protocol (SSSP)
......
529 562
/*===========================================================================*/
530 563

  
531 564
/** @} */
532
#endif
533 565

  
534 566
/*===========================================================================*/
535 567
/**
......
539 571
/*===========================================================================*/
540 572

  
541 573
AT24C01BNDriver moduleLldEeprom = {
542
  /* I2C driver   */ &MODULE_HAL_I2C_PROX_PM42_PM50_PMVDD_EEPROM_TOUCH_GAUGEFRONT,
574
  /* I2C driver   */ &MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT,
543 575
  /* I2C address  */ AT24C01BN_LLD_I2C_ADDR_FIXED,
544 576
};
545 577

  
......
554 586
};
555 587

  
556 588
BQ27500Driver moduleLldFuelGaugeFront = {
557
  /* I2C driver         */ &MODULE_HAL_I2C_PROX_PM42_PM50_PMVDD_EEPROM_TOUCH_GAUGEFRONT,
589
  /* I2C driver         */ &MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT,
558 590
  /* battery low GPIO   */ &moduleGpioGaugeBatLow1,
559 591
  /* battery good GPIO  */ &moduleGpioGaugeBatGd1,
560 592
};
561 593

  
562 594
BQ27500Driver moduleLldFuelGaugeRear = {
563
  /* I2C driver         */ &MODULE_HAL_I2C_PROX_PM18_PM33_GAUGEREAR,
595
  /* I2C driver         */ &MODULE_HAL_I2C_SR_PM18_PM33_GAUGEREAR,
564 596
  /* battery low GPIO   */ &moduleGpioGaugeBatLow2,
565 597
  /* battery good GPIO  */ &moduleGpioGaugeBatGd2,
566 598
};
567 599

  
568 600
INA219Driver moduleLldPowerMonitorVdd = {
569
  /* I2C Driver       */ &MODULE_HAL_I2C_PROX_PM42_PM50_PMVDD_EEPROM_TOUCH_GAUGEFRONT,
601
  /* I2C Driver       */ &MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT,
570 602
  /* I²C address      */ INA219_LLD_I2C_ADDR_A0 | INA219_LLD_I2C_ADDR_A1,
571 603
  /* current LSB (uA) */ 0x00u,
572 604
  /* configuration    */ NULL,
573 605
};
574 606

  
575 607
INA219Driver moduleLldPowerMonitorVio18 = {
576
  /* I2C Driver       */ &MODULE_HAL_I2C_PROX_PM18_PM33_GAUGEREAR,
608
  /* I2C Driver       */ &MODULE_HAL_I2C_SR_PM18_PM33_GAUGEREAR,
577 609
  /* I²C address      */ INA219_LLD_I2C_ADDR_A1,
578 610
  /* current LSB (uA) */ 0x00u,
579 611
  /* configuration    */ NULL,
580 612
};
581 613

  
582 614
INA219Driver moduleLldPowerMonitorVio33 = {
583
  /* I2C Driver       */ &MODULE_HAL_I2C_PROX_PM18_PM33_GAUGEREAR,
615
  /* I2C Driver       */ &MODULE_HAL_I2C_SR_PM18_PM33_GAUGEREAR,
584 616
  /* I²C address      */ INA219_LLD_I2C_ADDR_FIXED,
585 617
  /* current LSB (uA) */ 0x00u,
586 618
  /* configuration    */ NULL,
587 619
};
588 620

  
589 621
INA219Driver moduleLldPowerMonitorVsys42 = {
590
  /* I2C Driver       */ &MODULE_HAL_I2C_PROX_PM42_PM50_PMVDD_EEPROM_TOUCH_GAUGEFRONT,
622
  /* I2C Driver       */ &MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT,
591 623
  /* I²C address      */ INA219_LLD_I2C_ADDR_FIXED,
592 624
  /* current LSB (uA) */ 0x00u,
593 625
  /* configuration    */ NULL,
594 626
};
595 627

  
596 628
INA219Driver moduleLldPowerMonitorVio50 = {
597
  /* I2C Driver       */ &MODULE_HAL_I2C_PROX_PM42_PM50_PMVDD_EEPROM_TOUCH_GAUGEFRONT,
629
  /* I2C Driver       */ &MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT,
598 630
  /* I²C address      */ INA219_LLD_I2C_ADDR_A1,
599 631
  /* current LSB (uA) */ 0x00u,
600 632
  /* configuration    */ NULL,
......
604 636
  /* LED GPIO */ &moduleGpioLed,
605 637
};
606 638

  
639
TPS62113Driver moduleLldStepDownConverter = {
640
  /* Power enable GPIO */ &moduleGpioPowerEn,
641
};
642

  
643
#if (BOARD_SENSORRING == BOARD_PROXIMITYSENSOR) || defined(__DOXYGEN__)
644

  
607 645
MPR121Driver moduleLldTouch = {
608
  /* I²C Driver */ &MODULE_HAL_I2C_PROX_PM42_PM50_PMVDD_EEPROM_TOUCH_GAUGEFRONT,
646
  /* I²C Driver */ &MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT,
609 647
};
610 648

  
611 649
PCA9544ADriver moduleLldI2cMultiplexer1 = {
612
  /* I²C driver   */ &MODULE_HAL_I2C_PROX_PM18_PM33_GAUGEREAR,
650
  /* I²C driver   */ &MODULE_HAL_I2C_SR_PM18_PM33_GAUGEREAR,
613 651
  /* I²C address  */ PCA9544A_LLD_I2C_ADDR_A0 | PCA9544A_LLD_I2C_ADDR_A1 | PCA9544A_LLD_I2C_ADDR_A2,
614 652
};
615 653

  
616 654
PCA9544ADriver moduleLldI2cMultiplexer2 = {
617
  /* I²C driver   */ &MODULE_HAL_I2C_PROX_PM42_PM50_PMVDD_EEPROM_TOUCH_GAUGEFRONT,
655
  /* I²C driver   */ &MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT,
618 656
  /* I²C address  */ PCA9544A_LLD_I2C_ADDR_A0 | PCA9544A_LLD_I2C_ADDR_A1 | PCA9544A_LLD_I2C_ADDR_A2,
619 657
};
620 658

  
621
TPS62113Driver moduleLldStepDownConverter = {
622
  /* Power enable GPIO */ &moduleGpioPowerEn,
623
};
624

  
625 659
VCNL4020Driver moduleLldProximity1 = {
626
  /* I²C Driver */ &MODULE_HAL_I2C_PROX_PM18_PM33_GAUGEREAR,
660
  /* I²C Driver */ &MODULE_HAL_I2C_SR_PM18_PM33_GAUGEREAR,
627 661
};
628 662

  
629 663
VCNL4020Driver moduleLldProximity2 = {
630
  /* I²C Driver */ &MODULE_HAL_I2C_PROX_PM42_PM50_PMVDD_EEPROM_TOUCH_GAUGEFRONT,
664
  /* I²C Driver */ &MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT,
665
};
666

  
667
#endif /* BOARD_SENSORRING == BOARD_PROXIMITYSENSOR */
668

  
669
#if (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L0X) || defined(__DOXYGEN__)
670

  
671
PCAL6524Driver moduleLldGpioExtender1 = {
672
  /* I²C driver   */ &MODULE_HAL_I2C_SR_PM18_PM33_GAUGEREAR,
673
  /* I²C address  */ PCAL6524_LLD_I2C_ADDR_VDD,
674
};
675

  
676
PCAL6524Driver moduleLldGpioExtender2 = {
677
  /* I²C driver   */ &MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT,
678
  /* I²C address  */ PCAL6524_LLD_I2C_ADDR_VDD,
679
};
680

  
681
AT42QT1050Driver moduleLldTouch = {
682
  /* I²C driver   */ &MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT,
683
  /* I²C address  */ AT42QT1050_LLD_I2C_ADDRSEL_LOW,
684
};
685

  
686
#endif /* BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L0X */
687

  
688
#if (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L1X) || defined(__DOXYGEN__)
689

  
690
PCAL6524Driver moduleLldGpioExtender1 = {
691
  /* I²C driver   */ &MODULE_HAL_I2C_SR_PM18_PM33_GAUGEREAR,
692
  /* I²C address  */ PCAL6524_LLD_I2C_ADDR_VDD,
693
};
694

  
695
PCAL6524Driver moduleLldGpioExtender2 = {
696
  /* I²C driver   */ &MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT,
697
  /* I²C address  */ PCAL6524_LLD_I2C_ADDR_VDD,
698
};
699

  
700
AT42QT1050Driver moduleLldTouch = {
701
  /* I²C driver   */ &MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT,
702
  /* I²C address  */ AT42QT1050_LLD_I2C_ADDRSEL_LOW,
631 703
};
632 704

  
705
#endif /* BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L1X */
706

  
633 707
/** @} */
634 708

  
635 709
/*===========================================================================*/
......
641 715
#if (AMIROOS_CFG_TESTS_ENABLE == true) || defined(__DOXYGEN__)
642 716
#include <string.h>
643 717

  
644
/* ADC  */
718
/*
719
 * ADC
720
 */
645 721
static int _utShellCmdCb_Adc(BaseSequentialStream* stream, int argc, char* argv[])
646 722
{
647 723
  (void)argc;
......
665 741
  /* data           */ &_utAdcVsysData,
666 742
};
667 743

  
668
/* AT24C01BN-SH-B (EEPROM) */
744
/*
745
 * AT24C01BN-SH-B (EEPROM)
746
 */
669 747
static int _utShellCmdCb_AlldAt24c01bn(BaseSequentialStream* stream, int argc, char* argv[])
670 748
{
671 749
  (void)argc;
......
689 767
  /* data           */ &_utAlldAt24c01bnData,
690 768
};
691 769

  
692
/* BQ24103A (battery charger) */
770
/*
771
 * BQ24103A (battery charger)
772
 */
693 773
static int _utShellCmdCb_AlldBq24103a(BaseSequentialStream* stream, int argc, char* argv[])
694 774
{
695 775
  // local variables
......
739 819
  /* data           */ NULL,
740 820
};
741 821

  
742
/* BQ27500 (fuel gauge) */
822
/*
823
 * BQ27500 (fuel gauge)
824
 */
743 825
static int _utShellCmdCb_AlldBq27500(BaseSequentialStream* stream, int argc, char* argv[])
744 826
{
745 827
  // evaluate arguments
......
782 864
  /* data           */ &_utAlldBq27500Data,
783 865
};
784 866

  
785
/* BQ27500 (fuel gauge) in combination with BQ24103A (battery charger) */
867
/*
868
 * BQ27500 (fuel gauge) in combination with BQ24103A (battery charger)
869
 */
786 870
static int _utShellCmdCb_AlldBq27500Bq24103a(BaseSequentialStream* stream, int argc, char* argv[])
787 871
{
788 872
  // evaluate arguments
......
830 914
  /* data           */ &_utAlldBq27500Bq24103aData,
831 915
};
832 916

  
833
/* INA219 (power monitor) */
917
/*
918
 * INA219 (power monitor)
919
 */
834 920
static int _utShellCmdCb_AlldIna219(BaseSequentialStream* stream, int argc, char* argv[])
835 921
{
836 922
  // evaluate arguments
......
909 995
  /* data           */ &_utAlldIna219Data,
910 996
};
911 997

  
912
/* Status LED */
998
/*
999
 * Status LED
1000
 */
913 1001
static int _utShellCmdCb_AlldLed(BaseSequentialStream* stream, int argc, char* argv[])
914 1002
{
915 1003
  (void)argc;
......
929 1017
  /* data           */ &moduleLldStatusLed,
930 1018
};
931 1019

  
932
/* MPR121 (touch sensor) */
933
static int _utShellCmdCb_AlldMpr121(BaseSequentialStream* stream, int argc, char* argv[])
934
{
935
  (void)argc;
936
  (void)argv;
937
  aosUtRun(stream, &moduleUtAlldMpr121, NULL);
938
  return AOS_OK;
939
}
940
static ut_mpr121data_t _utAlldMpr121Data= {
941
  /* MPR121 driver  */ &moduleLldTouch,
942
  /* timeout        */ MICROSECONDS_PER_SECOND,
943
  /* event source   */ &aos.events.io,
944
  /* event flags    */ MODULE_OS_IOEVENTFLAGS_TOUCHINT,
945
};
946
aos_unittest_t moduleUtAlldMpr121 = {
947
  /* name           */ "MPR121",
948
  /* info           */ "touch sensor",
949
  /* test function  */ utAlldMpr121Func,
950
  /* shell command  */ {
951
    /* name     */ "unittest:Touch",
952
    /* callback */ _utShellCmdCb_AlldMpr121,
953
    /* next     */ NULL,
954
  },
955
  /* data           */ &_utAlldMpr121Data,
956
};
957

  
958
/* PCA9544A (I2C multiplexer) */
959
static int _utShellCmdCb_AlldPca5944a(BaseSequentialStream* stream, int argc, char* argv[])
960
{
961
  // evaluate arguments
962
  if (argc == 2) {
963
    if (strcmp(argv[1], "#1") == 0) {
964
      ((ut_pca9544adata_t*)moduleUtAlldPca9544a.data)->driver = &moduleLldI2cMultiplexer1;
965
      aosUtRun(stream, &moduleUtAlldPca9544a, "I2C bus #1");
966
      ((ut_pca9544adata_t*)moduleUtAlldPca9544a.data)->driver = NULL;
967
      return AOS_OK;
968
    }
969
    else if (strcmp(argv[1], "#2") == 0) {
970
      ((ut_pca9544adata_t*)moduleUtAlldPca9544a.data)->driver = &moduleLldI2cMultiplexer2;
971
      aosUtRun(stream, &moduleUtAlldPca9544a, "I2C bus #2");
972
      ((ut_pca9544adata_t*)moduleUtAlldPca9544a.data)->driver = NULL;
973
      return AOS_OK;
974
    }
975
  }
976
  // print help
977
  chprintf(stream, "Usage: %s OPTION\n", argv[0]);
978
  chprintf(stream, "Options:\n");
979
  chprintf(stream, "  #1\n");
980
  chprintf(stream, "    Test the multiplexer on the I2C bus #1.\n");
981
  chprintf(stream, "  #2\n");
982
  chprintf(stream, "    Test the multiplexer on the I2C bus #2.\n");
983
  return AOS_INVALID_ARGUMENTS;
984
}
985
static ut_pca9544adata_t _utAlldPca9544aData = {
986
  /* driver   */ NULL,
987
  /* timeout  */ MICROSECONDS_PER_SECOND,
988
};
989
aos_unittest_t moduleUtAlldPca9544a = {
990
  /* name           */ "PCA9544A",
991
  /* info           */ "I2C multiplexer",
992
  /* test function  */ utAlldPca9544aFunc,
993
  /* shell command  */ {
994
    /* name     */ "unittest:I2CMultiplexer",
995
    /* callback */ _utShellCmdCb_AlldPca5944a,
996
    /* next     */ NULL,
997
  },
998
  /* data           */ &_utAlldPca9544aData,
999
};
1000

  
1001
/* PKLCS1212E4001 (buzzer) */
1020
/*
1021
 * PKLCS1212E4001 (buzzer)
1022
 */
1002 1023
static int _utShellCmdCb_AlldPklcs1212e4001(BaseSequentialStream* stream, int argc, char* argv[])
1003 1024
{
1004 1025
  (void)argc;
......
1022 1043
  /* data           */ &_utAlldPklcs1212e4001Data,
1023 1044
};
1024 1045

  
1025
/* TPS62113 (stop-down converter) */
1046
/*
1047
 * TPS62113 (stop-down converter)
1048
 */
1026 1049
static int _utShellCmdCb_AlldTps62113(BaseSequentialStream* stream, int argc, char* argv[])
1027 1050
{
1028 1051
  // Although there are four TPS62113 on the PCB, they all share the same input signal.
......
1044 1067
  /* data           */ &moduleLldStepDownConverter,
1045 1068
};
1046 1069

  
1047
/* TPS62113 (step-donw converter) in combination with INA219 (power monitor) */
1070
/*
1071
 * TPS62113 (step-donw converter) in combination with INA219 (power monitor)
1072
 */
1048 1073
static int _utShellCmdCb_AlldTps62113Ina219(BaseSequentialStream* stream, int argc, char* argv[])
1049 1074
{
1050 1075
  (void)argc;
......
1069 1094
  /* data           */ &_utAlldTps62113Ina219Data,
1070 1095
};
1071 1096

  
1072
/* VCNL4020 (proximity sensor) */
1097
#if (BOARD_SENSORRING == BOARD_PROXIMITYSENSOR) || defined(__DOXYGEN__)
1098

  
1099
/*
1100
 * MPR121 (touch sensor)
1101
 */
1102
static int _utShellCmdCb_AlldMpr121(BaseSequentialStream* stream, int argc, char* argv[])
1103
{
1104
  (void)argc;
1105
  (void)argv;
1106
  aosUtRun(stream, &moduleUtAlldMpr121, NULL);
1107
  return AOS_OK;
1108
}
1109
static ut_mpr121data_t _utAlldMpr121Data= {
1110
  /* MPR121 driver  */ &moduleLldTouch,
1111
  /* timeout        */ MICROSECONDS_PER_SECOND,
1112
  /* event source   */ &aos.events.io,
1113
  /* event flags    */ MODULE_OS_IOEVENTFLAGS_TOUCHINT,
1114
};
1115
aos_unittest_t moduleUtAlldMpr121 = {
1116
  /* name           */ "MPR121",
1117
  /* info           */ "touch sensor",
1118
  /* test function  */ utAlldMpr121Func,
1119
  /* shell command  */ {
1120
    /* name     */ "unittest:Touch",
1121
    /* callback */ _utShellCmdCb_AlldMpr121,
1122
    /* next     */ NULL,
1123
  },
1124
  /* data           */ &_utAlldMpr121Data,
1125
};
1126

  
1127
/*
1128
 * PCA9544A (I2C multiplexer)
1129
 */
1130
static int _utShellCmdCb_AlldPca5944a(BaseSequentialStream* stream, int argc, char* argv[])
1131
{
1132
  // evaluate arguments
1133
  if (argc == 2) {
1134
    if (strcmp(argv[1], "#1") == 0) {
1135
      ((ut_pca9544adata_t*)moduleUtAlldPca9544a.data)->driver = &moduleLldI2cMultiplexer1;
1136
      aosUtRun(stream, &moduleUtAlldPca9544a, "I2C bus #1");
1137
      ((ut_pca9544adata_t*)moduleUtAlldPca9544a.data)->driver = NULL;
1138
      return AOS_OK;
1139
    }
1140
    else if (strcmp(argv[1], "#2") == 0) {
1141
      ((ut_pca9544adata_t*)moduleUtAlldPca9544a.data)->driver = &moduleLldI2cMultiplexer2;
1142
      aosUtRun(stream, &moduleUtAlldPca9544a, "I2C bus #2");
1143
      ((ut_pca9544adata_t*)moduleUtAlldPca9544a.data)->driver = NULL;
1144
      return AOS_OK;
1145
    }
1146
  }
1147
  // print help
1148
  chprintf(stream, "Usage: %s OPTION\n", argv[0]);
1149
  chprintf(stream, "Options:\n");
1150
  chprintf(stream, "  #1\n");
1151
  chprintf(stream, "    Test the multiplexer on the I2C bus #1.\n");
1152
  chprintf(stream, "  #2\n");
1153
  chprintf(stream, "    Test the multiplexer on the I2C bus #2.\n");
1154
  return AOS_INVALID_ARGUMENTS;
1155
}
1156
static ut_pca9544adata_t _utAlldPca9544aData = {
1157
  /* driver   */ NULL,
1158
  /* timeout  */ MICROSECONDS_PER_SECOND,
1159
};
1160
aos_unittest_t moduleUtAlldPca9544a = {
1161
  /* name           */ "PCA9544A",
1162
  /* info           */ "I2C multiplexer",
1163
  /* test function  */ utAlldPca9544aFunc,
1164
  /* shell command  */ {
1165
    /* name     */ "unittest:I2CMultiplexer",
1166
    /* callback */ _utShellCmdCb_AlldPca5944a,
1167
    /* next     */ NULL,
1168
  },
1169
  /* data           */ &_utAlldPca9544aData,
1170
};
1171

  
1172
/*
1173
 * VCNL4020 (proximity sensor)
1174
 */
1073 1175
static void _utAlldVcnl4020_disableInterrupt(VCNL4020Driver* vcnl)
1074 1176
{
1075 1177
  uint8_t intstatus;
......
1215 1317
  /* data           */ &_utAlldVcnl4020Data,
1216 1318
};
1217 1319

  
1320
#endif /* BOARD_SENSORRING == BOARD_PROXIMITYSENSOR */
1321

  
1322
#if (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L0X) || defined(__DOXYGEN__)
1323

  
1324
/*
1325
 * PCAL6524 (GPIO extender)
1326
 */
1327
static int _utShellCmdCb_AlldPcal6524(BaseSequentialStream* stream, int argc, char* argv[])
1328
{
1329
  // evaluate arguments
1330
  if (argc == 2) {
1331
    if (strcmp(argv[1], "#1") == 0) {
1332
      ((ut_pcal6524data_t*)moduleUtAlldPcal6524.data)->pcal6524d = &moduleLldGpioExtender1;
1333
      aosUtRun(stream, &moduleUtAlldPcal6524, "I2C bus #1");
1334
      ((ut_pcal6524data_t*)moduleUtAlldPcal6524.data)->pcal6524d = NULL;
1335
      return AOS_OK;
1336
    }
1337
    else if (strcmp(argv[1], "#2") == 0) {
1338
      ((ut_pcal6524data_t*)moduleUtAlldPcal6524.data)->pcal6524d = &moduleLldGpioExtender2;
1339
      aosUtRun(stream, &moduleUtAlldPcal6524, "I2C bus #2");
1340
      ((ut_pcal6524data_t*)moduleUtAlldPcal6524.data)->pcal6524d = NULL;
1341
      return AOS_OK;
1342
    }
1343
  }
1344
  // print help
1345
  chprintf(stream, "Usage: %s OPTION\n", argv[0]);
1346
  chprintf(stream, "Options:\n");
1347
  chprintf(stream, "  #1\n");
1348
  chprintf(stream, "    Test the GPIO extender on the I2C bus #1.\n");
1349
  chprintf(stream, "  #2\n");
1350
  chprintf(stream, "    Test the GPIO extender on the I2C bus #2.\n");
1351
  return AOS_INVALID_ARGUMENTS;
1352
}
1353
static ut_pcal6524data_t _utAlldPcal6524Data = {
1354
  /* driver   */ NULL,
1355
  /* timeout  */ MICROSECONDS_PER_SECOND,
1356
};
1357
aos_unittest_t moduleUtAlldPcal6524 = {
1358
  /* name           */ "PCAL6524",
1359
  /* info           */ "GPIO extender",
1360
  /* test function  */ utAlldPcal6524Func,
1361
  /* shell command  */ {
1362
    /* name     */ "unittest:GPIOExtender",
1363
    /* callback */ _utShellCmdCb_AlldPcal6524,
1364
    /* next     */ NULL,
1365
  },
1366
  /* data           */ &_utAlldPcal6524Data,
1367
};
1368

  
1369
/*
1370
 * AT42QT1050 (touch sensor)
1371
 */
1372
static int _utShellCmdCb_AlldAt42qt1050(BaseSequentialStream* stream, int argc, char* argv[])
1373
{
1374
  (void)argc;
1375
  (void)argv;
1376
  aosUtRun(stream, &moduleUtAlldAt42qt1050, NULL);
1377
  return AOS_OK;
1378
}
1379
static ut_at42qt1050data_t _utAlldMpr121Data= {
1380
  /* AT42QT1050 driver  */ &moduleLldTouch,
1381
  /* timeout            */ MICROSECONDS_PER_SECOND,
1382
  /* event source       */ &aos.events.io,
1383
  /* event flags        */ MODULE_OS_IOEVENTFLAGS_TOUCHINT,
1384
};
1385
aos_unittest_t moduleUtAlldAt42qt1050 = {
1386
  /* name           */ "AT42QT1050",
1387
  /* info           */ "touch sensor",
1388
  /* test function  */ utAlldAt42qt1050Func,
1389
  /* shell command  */ {
1390
    /* name     */ "unittest:Touch",
1391
    /* callback */ _utShellCmdCb_AlldAt42qt1050,
1392
    /* next     */ NULL,
1393
  },
1394
  /* data           */ &_utAlldMpr121Data,
1395
};
1396

  
1397
#endif /* BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L0X */
1398

  
1399
#if (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L1X) || defined(__DOXYGEN__)
1400

  
1401
/*
1402
 * PCAL6524 (GPIO extender)
1403
 */
1404
static int _utShellCmdCb_AlldPcal6524(BaseSequentialStream* stream, int argc, char* argv[])
1405
{
1406
  // evaluate arguments
1407
  if (argc == 2) {
1408
    if (strcmp(argv[1], "#1") == 0) {
1409
      ((ut_pcal6524data_t*)moduleUtAlldPcal6524.data)->pcal6524d = &moduleLldGpioExtender1;
1410
      aosUtRun(stream, &moduleUtAlldPcal6524, "I2C bus #1");
1411
      ((ut_pcal6524data_t*)moduleUtAlldPcal6524.data)->pcal6524d = NULL;
1412
      return AOS_OK;
1413
    }
1414
    else if (strcmp(argv[1], "#2") == 0) {
1415
      ((ut_pcal6524data_t*)moduleUtAlldPcal6524.data)->pcal6524d = &moduleLldGpioExtender2;
1416
      aosUtRun(stream, &moduleUtAlldPcal6524, "I2C bus #2");
1417
      ((ut_pcal6524data_t*)moduleUtAlldPcal6524.data)->pcal6524d = NULL;
1418
      return AOS_OK;
1419
    }
1420
  }
1421
  // print help
1422
  chprintf(stream, "Usage: %s OPTION\n", argv[0]);
1423
  chprintf(stream, "Options:\n");
1424
  chprintf(stream, "  #1\n");
1425
  chprintf(stream, "    Test the GPIO extender on the I2C bus #1.\n");
1426
  chprintf(stream, "  #2\n");
1427
  chprintf(stream, "    Test the GPIO extender on the I2C bus #2.\n");
1428
  return AOS_INVALID_ARGUMENTS;
1429
}
1430
static ut_pcal6524data_t _utAlldPcal6524Data = {
1431
  /* driver   */ NULL,
1432
  /* timeout  */ MICROSECONDS_PER_SECOND,
1433
};
1434
aos_unittest_t moduleUtAlldPcal6524 = {
1435
  /* name           */ "PCAL6524",
1436
  /* info           */ "GPIO extender",
1437
  /* test function  */ utAlldPcal6524Func,
1438
  /* shell command  */ {
1439
    /* name     */ "unittest:GPIOExtender",
1440
    /* callback */ _utShellCmdCb_AlldPcal6524,
1441
    /* next     */ NULL,
1442
  },
1443
  /* data           */ &_utAlldPcal6524Data,
1444
};
1445

  
1446
/*
1447
 * AT42QT1050 (touch sensor)
1448
 */
1449
static int _utShellCmdCb_AlldAt42qt1050(BaseSequentialStream* stream, int argc, char* argv[])
1450
{
1451
  (void)argc;
1452
  (void)argv;
1453
  aosUtRun(stream, &moduleUtAlldAt42qt1050, NULL);
1454
  return AOS_OK;
1455
}
1456
static ut_at42qt1050data_t _utAlldMpr121Data= {
1457
  /* AT42QT1050 driver  */ &moduleLldTouch,
1458
  /* timeout            */ MICROSECONDS_PER_SECOND,
1459
  /* event source       */ &aos.events.io,
1460
  /* event flags        */ MODULE_OS_IOEVENTFLAGS_TOUCHINT,
1461
};
1462
aos_unittest_t moduleUtAlldAt42qt1050 = {
1463
  /* name           */ "AT42QT1050",
1464
  /* info           */ "touch sensor",
1465
  /* test function  */ utAlldAt42qt1050Func,
1466
  /* shell command  */ {
1467
    /* name     */ "unittest:Touch",
1468
    /* callback */ _utShellCmdCb_AlldAt42qt1050,
1469
    /* next     */ NULL,
1470
  },
1471
  /* data           */ &_utAlldMpr121Data,
1472
};
1473

  
1474
#endif /* BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L1X */
1475

  
1218 1476
#endif /* AMIROOS_CFG_TESTS_ENABLE == true */
1219 1477

  
1220 1478
/** @} */

Also available in: Unified diff