67 lines
3.1 KiB
JavaScript
67 lines
3.1 KiB
JavaScript
import { controls_delay } from '@mixly/arduino-avr/generators/control';
|
|
|
|
export const controls_runnig_core = function (_, generator) {
|
|
var task = this.getFieldValue('task');
|
|
var core = this.getFieldValue('core');
|
|
var value_length = generator.valueToCode(this, 'length', generator.ORDER_ATOMIC);
|
|
var branch = generator.statementToCode(this, 'setup');
|
|
branch = branch.replace(/(^\s*)|(\s*$)/g, "");
|
|
var branch1 = generator.statementToCode(this, 'loop');
|
|
branch1 = branch1.replace(/(^\s*)|(\s*$)/g, "");
|
|
generator.definitions_['esp32_task_' + task] = 'void task_' + task + '( void * pvParameters ){\nfor(;;){\n ' + branch1 + '\n vTaskDelay(1);\n}\n}\n';
|
|
generator.setups_['setups_esp32_task_' + task] = '' + branch + '\n xTaskCreatePinnedToCore(task_' + task + ', "task_' + task + '", ' + value_length + ', NULL, 2, NULL, ' + core + ');\n';
|
|
return 'vTaskDelay(1);\n';
|
|
}
|
|
|
|
export const control_core_delay = function (_, generator) {
|
|
var value_sleeplength = generator.valueToCode(this, 'sleeplength', generator.ORDER_ATOMIC);
|
|
var code = 'vTaskDelay(' + value_sleeplength + ');\n'
|
|
return code;
|
|
}
|
|
|
|
export const controls_hw_timer = function (_, generator) {
|
|
var time = generator.valueToCode(this, 'TIME', generator.ORDER_ATOMIC);
|
|
var TIMER_NUM = this.getFieldValue('TIMER_NUM');
|
|
var mode = this.getFieldValue('mode');
|
|
generator.definitions_['hw_timer_t' + TIMER_NUM] = 'hw_timer_t * timer' + TIMER_NUM + ' =NULL;';
|
|
var funcName = 'IRAM_ATTR onTimer' + TIMER_NUM;
|
|
var branch = generator.statementToCode(this, 'DO');
|
|
var code = 'void' + ' ' + funcName + '() {\n' + branch + '}\n';
|
|
if (!isNaN(parseInt(time))) {
|
|
generator.setups_begin_['setup_hw_timer' + funcName] = 'timer' + TIMER_NUM + '=timerBegin(' + TIMER_NUM + ', 80, true);\n timerAttachInterrupt(timer' + TIMER_NUM + ', &onTimer' + TIMER_NUM + ', true);\n timerAlarmWrite(timer' + TIMER_NUM + ', ' + time * 1000 + ', ' + mode + ');';
|
|
} else {
|
|
generator.setups_begin_['setup_hw_timer' + funcName] = 'timer' + TIMER_NUM + '=timerBegin(' + TIMER_NUM + ', 80, true);\n timerAttachInterrupt(timer' + TIMER_NUM + ', &onTimer' + TIMER_NUM + ', true);\n timerAlarmWrite(timer' + TIMER_NUM + ', ' + time + ', ' + mode + ');';
|
|
}
|
|
generator.definitions_[funcName] = code;
|
|
return '';
|
|
}
|
|
|
|
export const controls_hw_timer_start = function () {
|
|
var TIMER_NUM = this.getFieldValue('TIMER_NUM');
|
|
return 'timerAlarmEnable(timer' + TIMER_NUM + ');\n';
|
|
}
|
|
|
|
export const controls_hw_timer_stop = function () {
|
|
var TIMER_NUM = this.getFieldValue('TIMER_NUM');
|
|
return 'timerEnd(timer' + TIMER_NUM + ');\n';
|
|
}
|
|
|
|
export const controls_end_program = function () {
|
|
return 'while(true);\n';
|
|
}
|
|
|
|
export const controls_interrupts = function () {
|
|
return 'interrupts();\n';
|
|
}
|
|
|
|
export const controls_nointerrupts = function () {
|
|
return 'noInterrupts();\n';
|
|
}
|
|
|
|
export const esp32_deep_sleep = function () {
|
|
var time = this.getFieldValue('time');
|
|
var code = 'esp_sleep_enable_timer_wakeup(' + time + ' * 1000000);\nesp_deep_sleep_start();\n';
|
|
return code;
|
|
}
|
|
|
|
export const base_delay = controls_delay; |