Changeset 459


Ignore:
Timestamp:
Sep 25, 2020, 7:28:35 PM (4 years ago)
Author:
coas-nagasima
Message:

Azure IoT への送信内容を、検出したpersonとcarの数を送信するよう変更。
Azure IoT CentralからLEDのON/OFFが出来るよう更新。

Location:
azure_iot_hub_riscv/trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub_riscv/trunk/app_iothub_client/Debug/Makefile

    r453 r459  
    183183APPL_ASMOBJS :=
    184184ifdef USE_CXX
    185         APPL_CXXOBJS := $(APPL_CXXOBJS) main.o
    186         APPL_COBJS := $(APPL_COBJS) client.o code.o envcmd.o command.o esp_at_socket.o kpu_main.o region_layer.o kpu.o
     185        APPL_CXXOBJS := $(APPL_CXXOBJS)
     186        APPL_COBJS := $(APPL_COBJS) main.o client.o code.o envcmd.o command.o esp_at_socket.o kpu_main.o region_layer.o kpu.o
    187187else
    188188        APPL_COBJS := $(APPL_COBJS) main.o client.o code.o envcmd.o command.o esp_at_socket.o kpu_main.o region_layer.o kpu.o
    189189endif
    190190APPL_COBJS := $(APPL_COBJS) log_output.o vasyslog.o t_perror.o strerror.o stub.o yolo.o
    191 APPL_CFLAGS := $(APPL_CFLAGS) -D___src_yolo_kmodel=model_data -D___src_yolo_kmodel_len=model_size
     191APPL_CFLAGS := $(APPL_CFLAGS)
    192192APPL_LIBS =
    193193ifdef APPLDIR
  • azure_iot_hub_riscv/trunk/app_iothub_client/src/client.c

    r453 r459  
    2323#include "serializer_devicetwin.h"
    2424#include "client.h"
     25#include "kpu_main.h"
    2526
    2627#ifdef _MSC_VER
     
    4142bool g_use_proxy;
    4243HTTP_PROXY_OPTIONS g_proxy_options;
    43 int ledOn;
    4444
    4545static int callbackCounter;
     
    133133
    134134// Define the Model
    135 BEGIN_NAMESPACE(WeatherStation);
    136 
    137 DECLARE_MODEL(ContosoAnemometer,
    138 WITH_DATA(double, windSpeed),
    139 WITH_DATA(double, temperature),
    140 WITH_DATA(double, humidity),
     135BEGIN_NAMESPACE(SecurityStation);
     136
     137DECLARE_MODEL(ContosoSecurityCamera,
     138WITH_DATA(int, is_person),
     139WITH_DATA(int, is_car),
    141140WITH_METHOD(quit),
    142141WITH_METHOD(turnLedOn),
     
    153152);
    154153
    155 DECLARE_DEVICETWIN_MODEL(AnemometerState,
     154DECLARE_DEVICETWIN_MODEL(SecurityCameraState,
    156155WITH_REPORTED_PROPERTY(ThresholdR, threshold)
    157156);
    158157
    159 DECLARE_DEVICETWIN_MODEL(AnemometerSettings,
     158DECLARE_DEVICETWIN_MODEL(SecurityCameraSettings,
    160159WITH_DESIRED_PROPERTY(ThresholdD, threshold, onDesiredThreshold)
    161160);
    162161
    163 END_NAMESPACE(WeatherStation);
     162END_NAMESPACE(SecurityStation);
    164163
    165164void anemometerReportedStateCallback(int status_code, void* userContextCallback)
    166165{
    167         AnemometerState *anemometer = (AnemometerState *)userContextCallback;
     166        SecurityCameraState *anemometer = (SecurityCameraState *)userContextCallback;
    168167
    169168        printf("received states \033[43m%d\033[49m, reported threshold = %.1f\n", status_code, anemometer->threshold.value);
     
    174173        // Note: The argument is NOT a pointer to threshold, but instead a pointer to the MODEL
    175174        //       that contains threshold as one of its arguments.  In this case, it
    176         //       is AnemometerSettings*.
    177 
    178         AnemometerSettings *anemometer = (AnemometerSettings *)argument;
     175        //       is SecurityCameraSettings*.
     176
     177        SecurityCameraSettings *anemometer = (SecurityCameraSettings *)argument;
    179178        printf("received a new desired.threshold = \033[42m%.1f\033[49m\n", anemometer->threshold.value);
    180179
     
    182181}
    183182
    184 METHODRETURN_HANDLE quit(ContosoAnemometer* device)
     183METHODRETURN_HANDLE quit(ContosoSecurityCamera* device)
    185184{
    186185        (void)device;
     
    193192}
    194193
    195 METHODRETURN_HANDLE turnLedOn(ContosoAnemometer* device)
     194METHODRETURN_HANDLE turnLedOn(ContosoSecurityCamera* device)
    196195{
    197196        (void)device;
    198197        (void)printf("\033[41mTurning LED on with Method.\033[49m\r\n");
    199198
    200         ledOn = 1;
     199        digitalWrite(LED_G_PIN, LOW);
     200        digitalWrite(LED_R_PIN, LOW);
     201        digitalWrite(LED_B_PIN, LOW);
    201202
    202203        METHODRETURN_HANDLE result = MethodReturn_Create(1, "{\"Message\":\"Turning fan on with Method\"}");
     
    204205}
    205206
    206 METHODRETURN_HANDLE turnLedOff(ContosoAnemometer* device)
     207METHODRETURN_HANDLE turnLedOff(ContosoSecurityCamera* device)
    207208{
    208209        (void)device;
    209210        (void)printf("\033[44mTurning LED off with Method.\033[49m\r\n");
    210211
    211         ledOn = 0;
     212        digitalWrite(LED_G_PIN, HIGH);
     213        digitalWrite(LED_R_PIN, HIGH);
     214        digitalWrite(LED_B_PIN, HIGH);
    212215
    213216        METHODRETURN_HANDLE result = MethodReturn_Create(0, "{\"Message\":\"Turning fan off with Method\"}");
     
    295298        EVENT_INSTANCE messages[MESSAGE_COUNT];
    296299        int msg_id = 0;
    297         double avgWindSpeed = 10.0;
    298         double minTemperature = 20.0;
    299         double minHumidity = 60.0;
    300300        int receiveContext = 0;
    301301
     
    315315                        (void)printf("Failed in serializer_init.");
    316316                }
    317                 else if (SERIALIZER_REGISTER_NAMESPACE(WeatherStation) == NULL)
     317                else if (SERIALIZER_REGISTER_NAMESPACE(SecurityStation) == NULL)
    318318                {
    319319                        LogError("unable to SERIALIZER_REGISTER_NAMESPACE");
     
    389389                                }
    390390#endif // SET_TRUSTED_CERT_IN_SAMPLES
    391                                 AnemometerState *anemometerState = IoTHubDeviceTwin_LL_CreateAnemometerState(iotHubClientHandle);
     391                                SecurityCameraState *anemometerState = IoTHubDeviceTwin_LL_CreateSecurityCameraState(iotHubClientHandle);
    392392                                if (anemometerState == NULL)
    393393                                {
    394                                         printf("Failure in IoTHubDeviceTwin_LL_CreateAnemometerState");
     394                                        printf("Failure in IoTHubDeviceTwin_LL_CreateSecurityCameraState");
    395395                                }
    396396                                else
    397397                                {
    398                                         (void)printf("IoTHubDeviceTwin_LL_CreateAnemometerState...successful.\r\n");
    399                                 }
    400                                 AnemometerSettings *anemometerSettings = IoTHubDeviceTwin_LL_CreateAnemometerSettings(iotHubClientHandle);
     398                                        (void)printf("IoTHubDeviceTwin_LL_CreateSecurityCameraState...successful.\r\n");
     399                                }
     400                                SecurityCameraSettings *anemometerSettings = IoTHubDeviceTwin_LL_CreateSecurityCameraSettings(iotHubClientHandle);
    401401                                if (anemometerSettings == NULL)
    402402                                {
    403                                         printf("Failure in IoTHubDeviceTwin_LL_CreateAnemometerSettings");
     403                                        printf("Failure in IoTHubDeviceTwin_LL_CreateSecurityCameraSettings");
    404404                                }
    405405                                else
    406406                                {
    407                                         (void)printf("IoTHubDeviceTwin_LL_CreateAnemometerSettings...successful.\r\n");
    408                                 }
    409                                 ContosoAnemometer* myWeather = CREATE_MODEL_INSTANCE(WeatherStation, ContosoAnemometer);
     407                                        (void)printf("IoTHubDeviceTwin_LL_CreateSecurityCameraSettings...successful.\r\n");
     408                                }
     409                                ContosoSecurityCamera* myWeather = CREATE_MODEL_INSTANCE(SecurityStation, ContosoSecurityCamera);
    410410                                if (myWeather == NULL)
    411411                                {
     
    440440                                                unsigned char *msgText;
    441441                                                size_t msgSize;
    442                                                 myWeather->windSpeed = avgWindSpeed + (rand() % 4 + 2);
    443                                                 myWeather->temperature = minTemperature + (rand() % 10);
    444                                                 myWeather->humidity = minHumidity + (rand() % 20);
    445                                                 if (SERIALIZE(&msgText, &msgSize, myWeather->windSpeed, myWeather->temperature, myWeather->humidity) != CODEFIRST_OK)
     442                                                myWeather->is_person = yolo_result.person;
     443                                                myWeather->is_car = yolo_result.car;
     444                                                yolo_result.reset = 1;
     445                                                if (SERIALIZE(&msgText, &msgSize, myWeather->is_person, myWeather->is_car) != CODEFIRST_OK)
    446446                                                {
    447447                                                        (void)printf("Failed to serialize\r\n");
     
    459459
    460460                                                        propMap = IoTHubMessage_Properties(messages[msgPos].messageHandle);
    461                                                         (void)sprintf_s(propText, sizeof(propText), myWeather->temperature > anemometerSettings->threshold.value ? "true" : "false");
    462                                                         if (Map_AddOrUpdate(propMap, "temperatureAlert", propText) != MAP_OK)
     461                                                        (void)sprintf_s(propText, sizeof(propText), (yolo_result.person > 0) ? "true" : "false");
     462                                                        if (Map_AddOrUpdate(propMap, "personAlert", propText) != MAP_OK)
    463463                                                        {
    464464                                                                (void)printf("ERROR: Map_AddOrUpdate Failed!\r\n");
     
    487487                                                anemometerState->threshold.value = anemometerSettings->threshold.value;
    488488                                                anemometerState->threshold.status = "success";
    489                                                 IoTHubDeviceTwin_LL_SendReportedStateAnemometerState(anemometerState, anemometerReportedStateCallback, anemometerState);
     489                                                IoTHubDeviceTwin_LL_SendReportedStateSecurityCameraState(anemometerState, anemometerReportedStateCallback, anemometerState);
    490490                                        }
    491491                                        iterator++;
     
    504504
    505505                                if (anemometerSettings != NULL)
    506                                         IoTHubDeviceTwin_LL_DestroyAnemometerSettings(anemometerSettings);
     506                                        IoTHubDeviceTwin_LL_DestroySecurityCameraSettings(anemometerSettings);
    507507                                if (anemometerState != NULL)
    508                                         IoTHubDeviceTwin_LL_DestroyAnemometerState(anemometerState);
     508                                        IoTHubDeviceTwin_LL_DestroySecurityCameraState(anemometerState);
    509509                                if (myWeather != NULL)
    510510                                        DESTROY_MODEL_INSTANCE(myWeather);
  • azure_iot_hub_riscv/trunk/app_iothub_client/src/command.c

    r458 r459  
    99#include "monitor.h"
    1010#include "device.h"
     11#include "kpu_main.h"
    1112
    1213/*
     
    5556"          WIFI                   set ssid pwd \n";
    5657
    57 #define LED_PIN       3         /* D13 */
    58 static const uint16_t led_pattern[1] = {
    59         LED_PIN
     58static const uint16_t led_pattern[] = {
     59        LED_G_PIN,
     60        LED_R_PIN,
     61        LED_B_PIN,
    6062};
    6163
     
    8890
    8991/*
    90  *  ダイレクトデジタルピン出力
    91  */
    92 void
    93 digitalWrite(uint8_t Pin, int dwVal){
    94         int8_t gpio_pin = gpio_get_gpiohno(Pin, false);
    95 
    96         if( gpio_pin >= 0){
    97                 gpio_set_pin(TADR_GPIOHS_BASE, (uint8_t)gpio_pin, dwVal);
    98         }
    99 }
    100 
    101 /*
    10292 *  LED設定コマンド関数
    10393 */
     
    110100        arg1 = a2i(argv[1]);
    111101        arg2 = a2i(argv[2]);
    112         if(arg1 >= 1 && arg1 <= 4){
    113                 if(arg2 != 0)
    114                         digitalWrite(led_pattern[arg1-1], 1);
    115                 else
    116                         digitalWrite(led_pattern[arg1-1], 0);
     102        if(arg1 >= 1 && arg1 <= sizeof(led_pattern) / sizeof(led_pattern[0])){
     103                if(arg2 != 0) {
     104                        digitalWrite(led_pattern[arg1-1], LOW);
     105                        syslog(LOG_NOTICE, "digitalWrite(%d,LOW)", arg1);
     106                }
     107                else {
     108                        digitalWrite(led_pattern[arg1-1], HIGH);
     109                        syslog(LOG_NOTICE, "digitalWrite(%d,HIGH)", arg1);
     110                }
     111        }
     112        else{
     113                syslog(LOG_NOTICE, "LED %d is not arival.", arg1);
    117114        }
    118115        return 0;
  • azure_iot_hub_riscv/trunk/app_iothub_client/src/esp_at_socket.c

    r458 r459  
    6161#include "azure_c_shared_utility/optimize_size.h"
    6262
     63#ifdef _MSC_VER
     64extern int sprintf_s(char* dst, size_t dstSizeInBytes, const char* format, ...);
     65#endif // _MSC_VER
     66
    6367//#define AT_DEBUG
    6468time_t MINIMUM_YEAR;
     
    306310{
    307311        struct tm tm = {
    308                 0,  /* tm_sec */
    309                 0,  /* tm_min */
    310                 0,  /* tm_hour */
    311                 1,  /* tm_mday */
    312                 0,  /* tm_mon */
    313                 2020 - 1900,  /* tm_year */
     312        0,  /* tm_sec */
     313        0,  /* tm_min */
     314        0,  /* tm_hour */
     315        1,  /* tm_mday */
     316        0,  /* tm_mon */
     317        2020 - 1900,  /* tm_year */
    314318        };
    315319        MINIMUM_YEAR = mktime(&tm);
     
    426430                                return false;
    427431                        }
     432#ifdef AT_DEBUG
     433                        else{
     434                                append_char(esp_state, '\0');
     435                                printf("\"%s\"\r\n", esp_state->string);
     436                        }
     437#endif
    428438                }
    429439                else if (isalpha(c) || isdigit(c) || c == ' ') {
     
    432442                        return false;
    433443                }
     444#ifdef AT_DEBUG
     445                else{
     446                        append_char(esp_state, '\0');
     447                        printf("\"%s\"\r\n", esp_state->string);
     448                }
     449#endif
    434450                break;
    435451        case at_link_id:
     
    634650#ifdef AT_DEBUG
    635651        if (esp_state->parse_state != at_none)
    636                 printf("\033[35mparse error. state:%d\033[0m\r\n", esp_state->parse_state);
     652                printf("\033[35mparse error. state:%d, char:%d\033[0m\r\n", esp_state->parse_state, c);
    637653#endif
    638654        esp_state->parse_state = at_none;
     
    14871503                }
    14881504
    1489                 sprintf(temp, "AT+CWJAP=\"%s\",\"%s\"\r\n", esp_state->ssid, esp_state->pwd);
     1505                sprintf_s(temp, sizeof(temp), "AT+CWJAP=\"%s\",\"%s\"\r\n", esp_state->ssid, esp_state->pwd);
    14901506                ret = esp_serial_write(esp_state, temp, &res_kind, 20000);
    14911507                if ((ret != E_OK) || (res_kind != at_response_kind_ok)) {
     
    14951511                esp_state->esp_state = esp_state_update_time;
    14961512        case esp_state_update_time:
    1497                 sprintf(temp, "AT+CIPSNTPCFG=%d,%d,\"%s\"\r\n", 1, 9, "ntp.nict.jp");
     1513                sprintf_s(temp, sizeof(temp), "AT+CIPSNTPCFG=%d,%d,\"%s\"\r\n", 1, 9, "ntp.nict.jp");
    14981514                ret = esp_serial_write(esp_state, temp, &res_kind, 10000);
    14991515                if ((ret != E_OK) || (res_kind != at_response_kind_ok)) {
     
    15911607
    15921608        ER ret;
    1593         char temp[64];
    1594         sprintf(temp, "AT+CIPSTART=%d,\"%s\",\"%s\",%d\r\n", connection->link_id, connection->ssl, host, port);
     1609        char temp[128];
     1610        sprintf_s(temp, sizeof(temp), "AT+CIPSTART=%d,\"%s\",\"%s\",%d\r\n", connection->link_id, connection->ssl, host, port);
    15951611        ret = esp_serial_write(connection->esp_state, temp, &res_kind, 10000);
    15961612        if ((ret != E_OK) || (res_kind != at_response_kind_connect)) {
     
    16301646        ER ret;
    16311647        char temp[64];
    1632         sprintf(temp, "AT+CIPCLOSE=%d\r\n", connection->link_id);
     1648        sprintf_s(temp, sizeof(temp), "AT+CIPCLOSE=%d\r\n", connection->link_id);
    16331649        ret = esp_serial_write(connection->esp_state, temp, &res_kind, 10000);
    16341650        if (ret == E_OK) {
     
    16561672        ER ret;
    16571673        char temp[64];
    1658         sprintf(temp, "AT+CIPSEND=%d,%d\r\n", connection->link_id, length);
     1674        sprintf_s(temp, sizeof(temp), "AT+CIPSEND=%d,%d\r\n", connection->link_id, length);
    16591675        ret = esp_serial_write(connection->esp_state, temp, &res_kind, 10000);
    16601676        if ((ret != E_OK) || (res_kind != at_response_kind_ok)) {
  • azure_iot_hub_riscv/trunk/app_iothub_client/src/kpu_main.c

    r458 r459  
    148148}
    149149
    150 void digitalWrite(uint8_t Pin, int dwVal);
     150/*
     151 *  ダイレクトデジタルピン出力
     152 */
     153void
     154digitalWrite(uint8_t Pin, int dwVal){
     155    int8_t gpio_pin = gpio_get_gpiohno(Pin, false);
     156
     157    if( gpio_pin >= 0){
     158        gpio_set_pin(TADR_GPIOHS_BASE, (uint8_t)gpio_pin, dwVal);
     159    }
     160}
    151161
    152162#if (CLASS_NUMBER > 1)
     
    188198kpu_model_context_t g_task;
    189199static region_layer_t detect_rl;
     200yolo_result_t yolo_result;
     201yolo_result_t yolo_result_frame;
    190202
    191203volatile uint8_t g_ai_done_flag;
     
    220232        lcd_drawRect(&DrawProp, x1, y1, x2, y2, 2, ST7789_RED);
    221233#endif
     234        if (strcmp(class_lable[class].str, "person") == 0)
     235                yolo_result_frame.person++;
     236        if (strcmp(class_lable[class].str, "car") == 0)
     237                yolo_result_frame.car++;
    222238}
    223239
     
    247263        syslog(LOG_NOTICE, "Sample program starts (exinf = %d).", (int_t) exinf);
    248264
    249         pinMode(LED_PIN, OUTPUT);
     265        pinMode(LED_G_PIN, OUTPUT);
     266        digitalWrite(LED_G_PIN, HIGH);
     267        pinMode(LED_R_PIN, OUTPUT);
     268        digitalWrite(LED_R_PIN, HIGH);
     269        pinMode(LED_B_PIN, OUTPUT);
     270        digitalWrite(LED_B_PIN, HIGH);
    250271
    251272        select_spi0_dvp_mode(1);
     
    523544                lcd_drawPicture(hlcd, 0, 0, hcmr->_width, hcmr->_height, (uint16_t *)hcmr->_dataBuffer);
    524545
     546                yolo_result_frame.person = 0;
     547                yolo_result_frame.car = 0;
     548
    525549                /* draw boxs */
    526550                region_layer_draw_boxes(&detect_rl, drawboxes);
     551
     552                if (yolo_result.reset) {
     553                        yolo_result.reset = 0;
     554                        yolo_result.person = 0;
     555                        yolo_result.car = 0;
     556                }
     557                if (yolo_result.person < yolo_result_frame.person)
     558                        yolo_result.person = yolo_result_frame.person;
     559                if (yolo_result.car < yolo_result_frame.car)
     560                        yolo_result.car = yolo_result_frame.car;
    527561        }
    528562        ov2640_activate(hcmr, false);
  • azure_iot_hub_riscv/trunk/app_iothub_client/src/kpu_main.h

    r458 r459  
    8686#define SPI_MOSI_PIN  28
    8787#define SPI_SS_PIN    29
    88 #define LED_PIN       3         /* D13 */
     88#define LED_G_PIN     12
     89#define LED_R_PIN     13
     90#define LED_B_PIN     14
    8991
    9092#define SPI_PORTID    SPI1_PORTID
     
    133135#ifndef TOPPERS_MACRO_ONLY
    134136
     137typedef struct yolo_result_t {
     138        int reset;
     139        int person;
     140        int car;
     141} yolo_result_t;
     142
     143extern yolo_result_t yolo_result;
     144
    135145/*
    136146 *  ヒープ領域の設定
     
    145155extern void heap_init(intptr_t exinf);
    146156extern void ai_done_isr(intptr_t exinf);
     157extern void pinMode(uint8_t Pin, uint8_t dwMode);
     158extern void digitalWrite(uint8_t Pin, int dwVal);
    147159
    148160#endif /* TOPPERS_MACRO_ONLY */
  • azure_iot_hub_riscv/trunk/asp_baseplatform/OBJ/K210_GCC/DEMO/demo.h

    r453 r459  
    8787#define SPI_MOSI_PIN  28
    8888#define SPI_SS_PIN    29
    89 #define LED_PIN       3         /* D13 */
     89#define LED_PIN       13
    9090
    9191#define SPI_PORTID    SPI1_PORTID
  • azure_iot_hub_riscv/trunk/asp_baseplatform/arch/riscv_gcc/prc_config.c

    r453 r459  
    7373        unsigned long mstatus = *(((uintptr_t*)p_excinf) + P_EXCINF_OFFSET_MSTATUS);
    7474        uintptr_t     pc      = *(((uintptr_t*)p_excinf) + P_EXCINF_OFFSET_PC);
     75        uintptr_t     sp0     = *(((uintptr_t*)p_excinf) + P_EXCONF_OFFSET_SP);
     76        uintptr_t     sp1     = *(((uintptr_t*)p_excinf) + P_EXCONF_OFFSET_SP + 1);
    7577        unsigned long excno   = mcause & MCAUSE_CAUSE;
     78        static int count = 0;
     79
     80        if (count == 0) {
     81                count++;
    7682
    7783        if((long)mcause < 0)
    7884                excno += TMAX_MACHNE_INTNO / 2;
    7985
    80         switch (excno) {
    81         case EXC_INSTRUCTION_ADDRESS_MISALIGNED:
    82                 syslog(LOG_EMERG, "\nUnregistered instruction address misaligned occurs.");
    83                 break;
    84         case EXC_INSTRUCTION_ADDRESS_FAULT:
    85                 syslog(LOG_EMERG, "\nUnregistered instruction address fault occurs.");
    86                 break;
    87         case EXC_ILLEGAL_INSTRUCTION:
    88                 syslog(LOG_EMERG, "\nUnregistered illegal instruction occurs.");
    89                 break;
    90         case EXC_BREAKPOINT:
    91                 syslog(LOG_EMERG, "\nUnregistered breakpoint occurs.");
    92                 break;
    93         case EXC_LOAD_ADDRESS_MISALIGNED:
    94                 syslog(LOG_EMERG, "\nUnregistered load address misaligned occurs.");
    95                 break;
    96         case EXC_LOAD_ADDRESS_FAULT:
    97                 syslog(LOG_EMERG, "\nUnregistered load address fault occurs.");
    98                 break;
    99         case EXC_STORE_AMO_ADDRESS_MISALIGNED:
    100                 syslog(LOG_EMERG, "\nUnregistered store AMO address misaligned occurs.");
    101                 break;
    102         case EXC_STORE_AMO_ACCESS_FAUT:
    103                 syslog(LOG_EMERG, "\nUnregistered store AMO access faut occurs.");
    104                 break;
    105         case EXC_ENVIRONMENT_CALL_FROM_MMODE:
    106                 syslog(LOG_EMERG, "\nUnregistered environment call from MMODE occurs.");
    107                 break;
    108         default:
    109                 syslog(LOG_EMERG, "\nUnregistered Interrupt occurs.");
    110                 break;
    111         }
    112 
    113         syslog(LOG_EMERG, "Excno = 0x%02X, PC = 0x%X, mstatus = 0x%X, p_excinf = 0x%X",
    114                    excno, pc, mstatus, p_excinf);
     86                switch (excno) {
     87                case EXC_INSTRUCTION_ADDRESS_MISALIGNED:
     88                                syslog_0(LOG_EMERG, "\nUnregistered instruction address misaligned occurs.");
     89                        break;
     90                case EXC_INSTRUCTION_ADDRESS_FAULT:
     91                                syslog_0(LOG_EMERG, "\nUnregistered instruction address fault occurs.");
     92                        break;
     93                case EXC_ILLEGAL_INSTRUCTION:
     94                                syslog_0(LOG_EMERG, "\nUnregistered illegal instruction occurs.");
     95                        break;
     96                case EXC_BREAKPOINT:
     97                                syslog_0(LOG_EMERG, "\nUnregistered breakpoint occurs.");
     98                        break;
     99                case EXC_LOAD_ADDRESS_MISALIGNED:
     100                                syslog_0(LOG_EMERG, "\nUnregistered load address misaligned occurs.");
     101                        break;
     102                case EXC_LOAD_ADDRESS_FAULT:
     103                                syslog_0(LOG_EMERG, "\nUnregistered load address fault occurs.");
     104                        break;
     105                case EXC_STORE_AMO_ADDRESS_MISALIGNED:
     106                                syslog_0(LOG_EMERG, "\nUnregistered store AMO address misaligned occurs.");
     107                        break;
     108                case EXC_STORE_AMO_ACCESS_FAUT:
     109                                syslog_0(LOG_EMERG, "\nUnregistered store AMO access faut occurs.");
     110                        break;
     111                case EXC_ENVIRONMENT_CALL_FROM_MMODE:
     112                                syslog_0(LOG_EMERG, "\nUnregistered environment call from MMODE occurs.");
     113                        break;
     114                default:
     115                                syslog_0(LOG_EMERG, "\nUnregistered Interrupt occurs.");
     116                        break;
     117                }
     118
     119                syslog_4(LOG_EMERG, "Excno = 0x%02X, PC = 0x%X, mstatus = 0x%X, p_excinf = 0x%X",
     120                        excno, pc, mstatus, p_excinf);
     121
     122                syslog_3(LOG_EMERG, "SP0 = 0x%X, SP1 = 0x%X, runtsk = 0x%X", sp0, sp1, p_runtsk->p_tinib->task);
     123
     124                unsigned int *addr = (((unsigned int *)p_excinf) + P_EXCONF_OFFSET_SP + 3);
     125                syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 0, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     126                syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 2, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     127                syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 4, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     128                syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 6, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     129                syslog_5(LOG_EMERG, "a0%x:%08X%08X %08X%08X", 8, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     130                syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 0, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     131                syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 2, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     132                syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 4, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     133                syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 6, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     134                syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X", 8, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     135                syslog_5(LOG_EMERG, "a1%x:%08X%08X %08X%08X",10, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     136                syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 0, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     137                syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 2, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     138                syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 4, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     139                syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 6, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     140                syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X", 8, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     141                syslog_5(LOG_EMERG, "a2%x:%08X%08X %08X%08X",10, addr[0], addr[1], addr[2], addr[3]); addr+=4;
     142
     143                addr = (unsigned int *)((sp0 + 15) / 16);
     144                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[-4], addr[-4], addr[-3], addr[-2], addr[-1]);
     145                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 0], addr[ 0], addr[ 1], addr[ 2], addr[ 3]);
     146                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 4], addr[ 4], addr[ 5], addr[ 6], addr[ 7]);
     147                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 8], addr[ 8], addr[ 9], addr[10], addr[11]);
     148                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[12], addr[12], addr[13], addr[14], addr[15]);
     149
     150                addr = (unsigned int *)((sp1 + 15) / 16);
     151                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[-4], addr[-4], addr[-3], addr[-2], addr[-1]);
     152                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 0], addr[ 0], addr[ 1], addr[ 2], addr[ 3]);
     153                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 4], addr[ 4], addr[ 5], addr[ 6], addr[ 7]);
     154                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[ 8], addr[ 8], addr[ 9], addr[10], addr[11]);
     155                syslog_5(LOG_EMERG, "%08X:%08X %08X %08X %08X", (unsigned int)&addr[12], addr[12], addr[13], addr[14], addr[15]);
     156        }
    115157
    116158        target_exit();
  • azure_iot_hub_riscv/trunk/azure_iot_sdk/serializer/src/jsondecoder.c

    r453 r459  
    598598            result = JSON_DECODER_MULTITREE_FAILED;
    599599        }
     600        else if (strcmp(json, "null") == 0) {
     601            result = JSON_DECODER_OK;
     602        }
    600603        else
    601604        {
Note: See TracChangeset for help on using the changeset viewer.