]> rtime.felk.cvut.cz Git - fpga/rpi-motor-control.git/blobdiff - pmsm-control/test_sw/cmd_proc.c
State structure moved to separate file. Cmd poll function moved to separate file.
[fpga/rpi-motor-control.git] / pmsm-control / test_sw / cmd_proc.c
diff --git a/pmsm-control/test_sw/cmd_proc.c b/pmsm-control/test_sw/cmd_proc.c
new file mode 100644 (file)
index 0000000..72260b5
--- /dev/null
@@ -0,0 +1,74 @@
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "cmd_proc.h"
+
+
+/**
+ * \brief
+ * Commands detection.
+ */
+void poll_cmd(struct rpi_state* state){
+       unsigned int tmp;
+       /*
+        * Note:
+        * pri pouziti scanf("%u",&simple_hall_duty); dochazelo
+        * k preukladani hodnot na promenne test. Dost divne.
+        */
+       while (1){
+               scanf("%u",&tmp);
+               printf("volba=%u\n",tmp);
+               switch (tmp){
+               case 1:
+                       scanf("%u",&tmp);
+                       sem_wait(&state->thd_par_sem);
+                       state->pwm1=tmp&0xFFF;
+                       sem_post(&state->thd_par_sem);
+                       break;
+               case 2:
+                       scanf("%u",&tmp);
+                       sem_wait(&state->thd_par_sem);
+                       state->pwm2=tmp&0xFFF;
+                       sem_post(&state->thd_par_sem);
+                       break;
+               case 3:
+                       scanf("%u",&tmp);
+                       sem_wait(&state->thd_par_sem);
+                       state->pwm3=tmp&0xFFF;
+                       sem_post(&state->thd_par_sem);
+                       break;
+               case 4:
+                       scanf("%u",&tmp);
+                       sem_wait(&state->thd_par_sem);
+                       state->test=tmp&0xFF;
+                       sem_post(&state->thd_par_sem);
+                       break;
+               case 5:
+                       sem_wait(&state->thd_par_sem);
+                       state->commutate=!state->commutate;
+                       /* switch off pwms at the end of commutation */
+                       state->pwm1&=state->commutate*0xFFFF;
+                       state->pwm2&=state->commutate*0xFFFF;
+                       state->pwm3&=state->commutate*0xFFFF;
+                       sem_post(&state->thd_par_sem);
+                       break;
+               case 6:
+                       scanf("%d",&tmp);
+                       sem_wait(&state->thd_par_sem);
+                       state->duty=tmp;
+                       sem_post(&state->thd_par_sem);
+                       break;
+               case 7:
+                       scanf("%d",&tmp);
+                       sem_wait(&state->thd_par_sem);
+                       state->desired_pos=tmp;
+                       sem_post(&state->thd_par_sem);
+                       break;
+
+               default:
+                       break;
+               }
+
+       }
+       return ;
+}