+}), 0)
+
+/* Dout */
+MAKE_CMD(dout, "d", "",
+({
+ sipo_putchar((uint8_t)args[1].l);
+
+ //Store status of dout ports.
+ reg_status_dout = (uint8_t)args[1].l;
+ 0;
+}), 0)
+
+/* rdout read the status of out ports.*/
+MAKE_CMD(rdout, "", "d",
+({
+ args[1].l = reg_status_dout;
+ 0;
+}), 0)
+
+
+/* Reset */
+MAKE_CMD(reset, "", "",
+({
+ //Silence "args not used" warning.
+ (void)args;
+ wdt_init(7);
+ wdt_start();
+
+ /*We want to have an infinite loop that lock access on watchdog timer.
+ This piece of code it's equivalent to a while(true), but we have done this because
+ gcc generate a warning message that suggest to use "noreturn" parameter in function reset.*/
+ ASSERT(args);
+ while(args);
+ 0;
+
+}), 0)
+
+/* Din */
+MAKE_CMD(din, "", "d",
+({
+ args[1].l = INPUT_GET();
+ 0;
+}), 0)
+
+
+
+/* Ain */
+MAKE_CMD(ain, "", ADC_FORMAT_STR,
+({
+ STATIC_ASSERT((sizeof(ADC_FORMAT_STR) - 1) == ADC_CHANNEL_NUM);
+ for(int i = 0; i < ADC_CHANNEL_NUM; i++)
+ args[i+1].l = adc_read_ai_channel(i);
+
+ 0;
+}), 0)
+
+/* Beep */
+MAKE_CMD(beep, "d", "",
+({
+ buz_beep(args[1].l);
+ 0;
+}), 0)