/******************************************************************************* Function: ACCEL_RESULT ACCELInitialize(ACCEL_INIT *initialization) *****************************************************************************/ ACCEL_RESULT ACCELInitialize(ACCEL_INIT *initialization, uint8_t accl_range) { PLIB_I2C_BaudRateSet(ACCEL_BMA250_I2C_MODULE, initialization->sourceClock, initialization->dataRate); PLIB_I2C_Enable(ACCEL_BMA250_I2C_MODULE); #ifndef ACCEL_USE_EXTERNAL_INTERUPT_HANDLER #ifndef ACCEL_USE_POLLING SYS_INT_VectorPrioritySet(ACCEL_BMA250_I2C_VECTOR,INT_PRIORITY_LEVEL_2); #endif #endif if(ReadChipID() == ACCEL_INVALID) return ACCEL_INVALID; SetRangeAndBandwidth(accl_range); ReadChipVersion(); SetThershold(); SetFIFO(); accelXYZData.acc_x_lsb.new_data_x = 0; accelXYZData.acc_y_lsb.new_data_y = 0; accelXYZData.acc_z_lsb.new_data_z = 0; return ACCEL_VALID; }
/* ** Dialog to set 16650, 16654, and 16750 FIFO modes */ MRESULT EXPENTRY fnwpHdwFIFOsetupDlg(HWND hwnd,USHORT msg,MPARAM mp1,MPARAM mp2) { static DCB stComDCB; static bAllowClick; static COMCTL *pstComCtl; static FIFOINF *pstFIFOinfo; FIFODEF stFIFOcontrol; switch (msg) { case WM_INITDLG: // CenterDlgBox(hwnd); bAllowClick = FALSE; // WinSetFocus(HWND_DESKTOP,hwnd); pstComCtl = PVOIDFROMMP(mp2); pstFIFOinfo = pstComCtl->pVoidPtrOne; if (GetDCB(pstComCtl->pstIOctl,pstComCtl->hCom,&stComDCB)) return(FALSE); if (pstComCtl->pszPortName != NULL) WinSetWindowText(hwnd,pstComCtl->pszPortName); FillHdwFIFOsetupDlg(hwnd,stComDCB.Flags3,pstFIFOinfo); WinPostMsg(hwnd,UM_INITLS,(MPARAM)0L,(MPARAM)0L); break; case UM_INITLS: bAllowClick = TRUE; break; case WM_CONTROL: switch (SHORT2FROMMP(mp1)) { case BN_CLICKED: if (bAllowClick) if (!TCHdwFIFOsetupDlg(hwnd,SHORT1FROMMP(mp1),pstFIFOinfo)) return(FALSE); break; default: break; } break; case WM_COMMAND: switch(SHORT1FROMMP(mp1)) { case DID_OK: UnloadHdwFIFOsetupDlg(hwnd,&stComDCB,pstFIFOinfo); stFIFOcontrol.wFIFOflags = pstFIFOinfo->wFIFOflags; stFIFOcontrol.wFIFOflags |= FIFO_FLG_NO_DCB_UPDATE; stFIFOcontrol.wTxFIFOload = pstFIFOinfo->wTxFIFOload; SetFIFO(pstComCtl->pstIOctl,pstComCtl->hCom,&stFIFOcontrol); SendDCB(pstComCtl->pstIOctl,pstComCtl->hCom,&stComDCB); WinDismissDlg(hwnd,TRUE); break; case DID_CANCEL: WinDismissDlg(hwnd,FALSE); break; case DID_HELP: if (pstFIFOinfo->wFIFOflags & FIFO_FLG_TYPE_16750) pstComCtl->usHelpId = HLPP_16750_FIFO_DLG; else if (pstFIFOinfo->wFIFOflags & FIFO_FLG_TYPE_16650) pstComCtl->usHelpId = HLPP_16650_FIFO_DLG; else if (pstFIFOinfo->wFIFOflags & FIFO_FLG_TYPE_16654) pstComCtl->usHelpId = HLPP_16654_FIFO_DLG; else pstComCtl->usHelpId = HLPP_16550_FIFO_DLG; DisplayHelpPanel(pstComCtl); break; default: return WinDefDlgProc(hwnd,msg,mp1,mp2); } break; default: return(WinDefDlgProc(hwnd,msg,mp1,mp2)); } return(FALSE); }
/* ** Dialog to set handshaking modes */ MRESULT EXPENTRY fnwpHandshakeDlg(HWND hwnd,USHORT msg,MPARAM mp1,MPARAM mp2) { static DCB stComDCB; static bAllowClick; static COMCTL *pstComCtl; static FIFOINF stFIFOinfo; FIFODEF stFIFOcontrol; switch (msg) { case WM_INITDLG: // CenterDlgBox(hwnd); // WinSetFocus(HWND_DESKTOP,hwnd); bAllowClick = FALSE; pstComCtl = PVOIDFROMMP(mp2); if (GetDCB(pstComCtl->pstIOctl,pstComCtl->hCom,&stComDCB)) return(FALSE); if (GetFIFOinfo(pstComCtl->pstIOctl,pstComCtl->hCom,&stFIFOinfo) != NO_ERROR) { stFIFOinfo.wFIFOsize = 16; stFIFOinfo.wTxFIFOload = 16; stFIFOinfo.wFIFOflags = 0; } if (pstComCtl->pszPortName != NULL) WinSetWindowText(hwnd,pstComCtl->pszPortName); WinPostMsg(hwnd,UM_INITLS,(MPARAM)0L,(MPARAM)0L); break; case UM_INITLS: FillHandshakeDlg(hwnd,&stComDCB,&stFIFOinfo); bAllowClick = TRUE; break; case WM_CONTROL: if (SHORT2FROMMP(mp1) == BN_CLICKED) { if (bAllowClick) if (!TCHandshakeDlg(hwnd,SHORT1FROMMP(mp1),&stComDCB,&stFIFOinfo)) return(FALSE); } break; case WM_COMMAND: switch(SHORT1FROMMP(mp1)) { case DID_OK: UnloadHandshakeDlg(hwnd,&stComDCB,&stFIFOinfo); stFIFOcontrol.wFIFOflags = stFIFOinfo.wFIFOflags; stFIFOcontrol.wFIFOflags |= FIFO_FLG_NO_DCB_UPDATE; stFIFOcontrol.wTxFIFOload = stFIFOinfo.wTxFIFOload; SetFIFO(pstComCtl->pstIOctl,pstComCtl->hCom,&stFIFOcontrol); SendDCB(pstComCtl->pstIOctl,pstComCtl->hCom,&stComDCB); WinDismissDlg(hwnd,TRUE); break; case DID_CANCEL: WinDismissDlg(hwnd,FALSE); break; case DID_HELP: DisplayHelpPanel(pstComCtl); break; default: return WinDefDlgProc(hwnd,msg,mp1,mp2); } break; default: return(WinDefDlgProc(hwnd,msg,mp1,mp2)); } return(FALSE); }