summaryrefslogtreecommitdiff
path: root/software/mpu/src/lightsens.c
diff options
context:
space:
mode:
Diffstat (limited to 'software/mpu/src/lightsens.c')
-rw-r--r--software/mpu/src/lightsens.c60
1 files changed, 57 insertions, 3 deletions
diff --git a/software/mpu/src/lightsens.c b/software/mpu/src/lightsens.c
index 230a0c3..ed280f0 100644
--- a/software/mpu/src/lightsens.c
+++ b/software/mpu/src/lightsens.c
@@ -8,10 +8,20 @@
#include "Types.h"
#include "FreeRTOS.h"
#include "queue.h"
+#include "adc.h"
+
+#define LED_PORT 0 // Port for led
+#define LED_BIT 7 // Bit on port for led
#define TASK_PRIORITY_lightsens ( tskIDLE_PRIORITY + 2 )
#define TASK_STACK_SIZE_lightsens ( ( unsigned short ) 64 )
+
+/* Debug Helper */
+Status_t lightsens_ValueToString()
+{
+}
+
/* Globals */
static Task_Param_t TaskParam_LightSens;
@@ -25,6 +35,15 @@ static void lightsens_Process_Task(void *Param)
Message_t Msg;
portCHAR chBufLSe[10] = "Seas Knl!";
+ portCHAR led;
+
+ portCHAR i;
+// volatile uint32_t ADCValue[ADC_NUM];
+ uint32_t ADCValue[ADC_NUM];
+
+ // set led port to output
+ LPC_GPIO0->DIR |= 1<<LED_BIT;
+
if(NULL == TaskParam_LightSens.QueueHandles.hxq_LightSens)
{
return;
@@ -33,6 +52,14 @@ static void lightsens_Process_Task(void *Param)
Msg.Sender = Sender_LightSens;
Msg.pData = chBufLSe;
xQueueSend(TaskParam_LightSens.QueueHandles.hxq_Kernel, &Msg, MS(10));
+
+ /* Initialize ADC */
+ ADCInit( ADC_CLK );
+ for ( i = 0; i < ADC_NUM; i++ )
+ {
+ ADCValue[i] = ADCRead( i ); /* Polling */
+ }
+
while(1)
{
if( xQueueReceive( TaskParam_LightSens.QueueHandles.hxq_LightSens, &Msg, MS(5)))
@@ -41,9 +68,36 @@ static void lightsens_Process_Task(void *Param)
* switch Msg.Sender
*
*/
- Msg.Sender = Sender_LightSens;
- Msg.pData = chBufLSe;
- xQueueSend(TaskParam_LightSens.QueueHandles.hxq_Kernel, &Msg, MS(10));
+ switch (Msg.Sender)
+ {
+ case Sender_Kernel:
+ {
+ if (((portCHAR*)(Msg.pData))[0] == 'l')
+ {
+ if(led)
+ led = 0;
+ else
+ led = 1<<LED_BIT;
+
+
+ // LPC_GPIO0->MASKED_ACCESS[(1<<LED_BIT)] = led;
+ }
+ if(((portCHAR*)(Msg.pData))[0] == 'r')
+ {
+ for ( i = 0; i < ADC_NUM; i++ )
+ {
+ ADCValue[i] = ADCRead( i ); /* Polling */
+ }
+ }
+
+ Msg.Sender = Sender_LightSens;
+ Msg.pData = chBufLSe;
+ Msg.pData = ADCValue;
+ xQueueSend(TaskParam_LightSens.QueueHandles.hxq_Kernel, &Msg, MS(10));
+ }
+ default: {;} /* for the time being we ignore messages received from
+ someone other than the kernel. */
+ }
}
}
}