PROCESS_THREAD(debug_process, ev, data) { char line[MAX_LINE_LENGTH]; uint16_t read; uint8_t b; uint32_t flashAddress = 0; uint32_t flashCount = 0; uint32_t t = 0; PROCESS_BEGIN(); while (1) { PROCESS_YIELD(); while (dma_ring_buffer_readline(&g_debugUsartDmaInputRingBuffer, line, MAX_LINE_LENGTH)) { if (strcmp(line, "!CONNECT\n") == 0) { debug_write_line("+OK"); debug_write_line("!clear"); debug_write_line("!set name,dc-electronic-load"); debug_write_line("!set description,'DC Electonic Load'"); } else if (strcmp(line, "!RESET\n") == 0) { debug_write_line("+OK"); NVIC_SystemReset(); } #ifdef ADC_ENABLE else if (strcmp(line, "!ADCLAST\n") == 0) { debug_write("+OK "); debug_write_u16(lastAdcValue[0], 10); debug_write(","); debug_write_u16(lastAdcValue[1], 10); debug_write(","); debug_write_u16(lastAdcValue[2], 10); debug_write(","); debug_write_u16(lastAdcValue[3], 10); debug_write(","); debug_write_u16(setCurrentMilliamps, 10); debug_write_line(""); } else if (strcmp(line, "!ADCRAW\n") == 0) { debug_write("+OK "); debug_write_u16(adc_sample(ADC_CH0_SINGLE), 10); debug_write(","); debug_write_u16(adc_sample(ADC_CH1_SINGLE), 10); debug_write(","); debug_write_u16(adc_sample(ADC_CH2_SINGLE), 10); debug_write(","); debug_write_u16(adc_sample(ADC_CH3_SINGLE), 10); debug_write_line(""); } #endif #ifdef FAN_ENABLE else if (strncmp(line, "!FANSET ", 8) == 0) { uint8_t fanSetOverride = atoi(line + 8); fan_set(fanSetOverride); debug_write_line("+OK"); } else if (strcmp(line, "!FANGET\n") == 0) { debug_write("+OK "); debug_write_u8(fan_get(), 10); debug_write_line(""); } #endif #ifdef DISP6800_ENABLE else if (strcmp(line, "!DISPON\n") == 0) { disp6800_set_display_onoff(DISP6800_DISPLAY_ON); debug_write_line("+OK"); } else if (strcmp(line, "!DISPOFF\n") == 0) { disp6800_set_display_onoff(DISP6800_DISPLAY_OFF); debug_write_line("+OK"); } #endif #ifdef FLASH_ENABLE else if (strcmp(line, "!FLASHCLEAR\n") == 0) { flashsst25_erase_chip(); debug_write_line("+OK"); } else if (strncmp(line, "!FLASHWRITE ", 12) == 0) { flashAddress = atoi(line + 12); flashCount = FLASH_BLOCK_SIZE; debug_write_line("+READY"); t = time_ms(); while (1) { if (flashCount <= 0) { debug_write("+OK "); debug_write_u32(flashAddress, 10); debug_write_line(""); break; } if ((time_ms() - t) > 5000) { debug_write_line("-FAIL"); break; } if ((read = dma_ring_buffer_read(&g_debugUsartDmaInputRingBuffer, (uint8_t*)line, MIN(flashCount, sizeof(line)))) <= 0) { continue; } flashsst25_write(flashAddress, (uint8_t*)line, read); flashAddress += read; flashCount -= read; t = time_ms(); } } else if (strncmp(line, "!FLASHREAD ", 11) == 0) { flashAddress = atoi(line + 11); flashCount = FLASH_BLOCK_SIZE; debug_write_line("+OK"); flashsst25_read_begin(flashAddress); while (flashCount > 0) { b = flashsst25_read(); debug_write_bytes(&b, 1); flashCount--; } flashsst25_read_end(); } #endif else { debug_write("?Unknown command: "); debug_write_line(line); } } } PROCESS_END(); }
static json_t *fan_put(struct rest_uri_param *param) { json_t *req; json_t *TachoMeterThreshold; result_t rs = RESULT_OK; put_fan_t put_fan_info = { {0} }; uint32 value; json_t *elem = NULL; json_t *obj = NULL; int32 i = 0; int32 array_size; int32 tzone_idx, fan_idx = 0; tzone_idx = get_asset_idx(param, "zone_id", MC_TYPE_TZONE); if (tzone_idx == -1) { HTTPD_ERR("get cooling zone index fail\n"); return NULL; } fan_idx = get_asset_idx(param, "fan_id", MC_TYPE_FAN); if (fan_idx == -1) { HTTPD_ERR("get fan index fail\n"); return NULL; } rs = libwrap_pre_put_fan(tzone_idx, fan_idx, &put_fan_info); if (rs != RESULT_OK) { HTTPD_ERR("fan pre put fail, result is %d\n", rs); return NULL; } req = json_parse(param->json_data); put_prepare_str(req, put_fan_info.descr, DESCRIPTION_LEN, RMM_JSON_DESC); put_prepare_str(req, put_fan_info.asset_tag, REST_ASSET_TAG_LEN, RMM_JSON_ASSET_TAG); TachoMeterThreshold = json_object_get(req, RMM_JSON_THRESHOLD); if (TachoMeterThreshold != NULL) { array_size = json_array_size(TachoMeterThreshold); for (i = 0; i < array_size; i++) { elem = NULL; elem = json_array_get(TachoMeterThreshold, i); if (elem == NULL) { HTTPD_ERR("tacho meter thresh get error\n"); return NULL; } put_prepare_int(elem, &(put_fan_info.threshold.lower_non_critical), RMM_JSON_LOWER_NON_CRITICAL); put_prepare_int(elem, &(put_fan_info.threshold.upper_non_critical), RMM_JSON_UPPER_NON_CRITICAL); put_prepare_int(elem, &(put_fan_info.threshold.lower_critical), RMM_JSON_LOWER_CRITICAL); put_prepare_int(elem, &(put_fan_info.threshold.upper_critical), RMM_JSON_UPPER_CRITICAL); } } rs = libwrap_put_fan(tzone_idx, fan_idx, put_fan_info); if (rs != RESULT_OK) { HTTPD_ERR("fan put fail, result is %d\n", rs); return NULL; } json_free(req); int8 buff[128] = {}; snprintf(buff, sizeof(buff), "%d", ((tzone_idx - 1) * MAX_PWM_NUM + fan_idx)); rf_log(INFO, MSGFanUpdate, buff); return fan_get(param); }