Basic LED Demo for nexpaq development kit

Dependencies:   nexpaq_mdk

Fork of LED_Demo by Maxim nexpaq

LED Demo

MAX32625NEXPAQ development module

This project is a demonstration application for the MAX32625NEXPAQ development module. You will need the nexpaq application and a compatible phone to run this demo. This project demonstrates sending button information back to the application running on the phone, and the phone controlling the on board RGB LED.

Go to the nexpaq developers hub for details on how to load the code for the tile into the application.

Resources

main.cpp

Committer:
jowen
Date:
2016-09-19
Revision:
2:3842948024ca
Parent:
0:b86eda0e990d
Child:
3:9d15891f9352

File content as of revision 2:3842948024ca:

#include "mbed.h"
#include "nexpaq_mdk.h"

#ifdef __cplusplus
extern "C" {
#endif
extern volatile uint8_t flag_jump_bsl;
#ifdef __cplusplus
}
#endif
DigitalOut ledR(P2_4, LED_OFF);
DigitalOut ledG(P2_5, LED_OFF);
DigitalOut ledB(P2_6, LED_OFF);
DigitalIn button(P0_1, PullUp);

/***** Definitions *****/
#define		FUNCTION_TABLE_NUM					1
#define		UUID_NUM							16			//UUID number is 16, don't change it
#define     BUTTON_DEBOUNCE                     5
#define     DBG_MSG

/***** Globals *****/
void my_function_CMD_2700(unsigned char *pData, unsigned char len);
const MDK_REGISTER_CMD my_cmd_func_table[FUNCTION_TABLE_NUM] = {
		{0x2700, my_function_CMD_2700},		// Command -> function
};

int btnCnt = 0;
int btnSts = 0;
unsigned char btnPress = 0x01;

/***** Functions *****/
void my_function_CMD_2700(unsigned char *pData, unsigned char len){
	unsigned char response = 0x00;
	ledR = (pData[0]>0) ? LED_ON : LED_OFF ;
	ledG = (pData[1]>0) ? LED_ON : LED_OFF ;
	ledB = (pData[2]>0) ? LED_ON : LED_OFF ;
	np_api_upload(0x2701, &response, 1);
#ifdef DBG_MSG            
    printf("LED Command Received\n\r");  
#endif            
}

/******************************************************************************/
void app_setup(){
//	np_api_set_app_version(0, 0, 3);
	if ( np_api_register((MDK_REGISTER_CMD*)my_cmd_func_table, FUNCTION_TABLE_NUM) == MDK_REGISTER_FAILD ) {
		// Register failed handle code
		error("MDK Register Failed");
	}
#ifdef DBG_MSG            
    printf("MDK Commands Registered\n\r");  
#endif            
}

void app_loop() {
	if (btnSts) {
		btnCnt = (button) ? 0 : (btnCnt + 1);
		if (btnCnt >= BUTTON_DEBOUNCE) {
			np_api_upload(0x2800, &btnPress, 1);
			btnSts = !btnSts;
			btnCnt = 0;
#ifdef DBG_MSG            
      		printf("Button Pressed\n\r");  
#endif            
		}
	} else {
		btnCnt = (!button) ? 0 : (btnCnt + 1);
		if (btnCnt >= BUTTON_DEBOUNCE) {
			btnSts = !btnSts;
			btnCnt = 0;
		}	
	}
}

int main(void){
	
	uint32_t cnt, i;
	
	cnt = 500;
	ledR = 1;
	ledG = 0;
	ledB = 1;

	np_api_init();
	app_setup();
	np_api_start();	
	//Thread::wait(5000);
	while(1){
		app_loop();	
		np_api_bsl_chk();
    	Thread::wait(50);
    	
    	if (cnt) {
    		cnt--;
			if (cnt == 0) {
				ledR = 1;
				ledG = 1;
				ledB = 1;	
				Thread::wait(50);
				cnt = 1000;	
				//NVIC_SystemReset();
			}
		}
		
		i = cnt%30;
		if (i == 10)
		{
			ledR = 1;
			ledG = 1;
			ledB = 1;
		}
		else if (i == 20){
			ledR = 1;
			ledG = 0;
			ledB = 1;	
		}
		else if (i == 0) {
			ledR = 1;
			ledG = 1;
			ledB = 0;
		}
	}

	return 0;
}