/********************************************************************* * * _HandleIncomingPacket() * * Function description * Read an incoming command from the down channel and process it. * * Additional information * This function is called each time after sending a packet. * Processing incoming packets is done asynchronous. SystemView might * already have sent event packets after the host has sent a command. */ static void _HandleIncomingPacket(void) { U8 Cmd; int Status; // Status = SEGGER_RTT_ReadNoLock(CHANNEL_ID_DOWN, &Cmd, 1); if (Status > 0) { switch (Cmd) { case SEGGER_SYSVIEW_COMMAND_ID_START: SEGGER_SYSVIEW_Start(); break; case SEGGER_SYSVIEW_COMMAND_ID_STOP: SEGGER_SYSVIEW_Stop(); break; case SEGGER_SYSVIEW_COMMAND_ID_GET_SYSTIME: SEGGER_SYSVIEW_RecordSystime(); break; case SEGGER_SYSVIEW_COMMAND_ID_GET_TASKLIST: SEGGER_SYSVIEW_SendTaskList(); break; case SEGGER_SYSVIEW_COMMAND_ID_GET_SYSDESC: SEGGER_SYSVIEW_GetSysDesc(); break; } } }
/********************************************************************* * * SEGGER_RTT_Read * * Function description * Reads characters from SEGGER real-time-terminal control block * which have been previously stored by the host. * * Parameters * BufferIndex Index of Down-buffer to be used (e.g. 0 for "Terminal"). * pBuffer Pointer to buffer provided by target application, to copy characters from RTT-down-buffer to. * BufferSize Size of the target application buffer. * * Return value * Number of bytes that have been read. */ unsigned SEGGER_RTT_Read(unsigned BufferIndex, void* pBuffer, unsigned BufferSize) { unsigned NumBytesRead; // SEGGER_RTT_LOCK(); // // Call the non-locking read function // NumBytesRead = SEGGER_RTT_ReadNoLock(BufferIndex, pBuffer, BufferSize); // // Finish up. // SEGGER_RTT_UNLOCK(); // return NumBytesRead; }