(clang) terminal control sequence test
This commit is contained in:
+3
-64
@@ -3,73 +3,12 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#define QUEUE_SIZE ( ( uint32_t ) 4u )
|
|
||||||
#define QUEUE_EMPTY_VALUE ( ( uint32_t ) 0u )
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint32_t head;
|
|
||||||
uint32_t tail;
|
|
||||||
uint32_t queue_data[ QUEUE_SIZE ];
|
|
||||||
} queue_t;
|
|
||||||
|
|
||||||
static void queue_initialise( queue_t *queue );
|
|
||||||
static int queue_enqueue( queue_t *queue, uint32_t message );
|
|
||||||
static int queue_dequeue( queue_t *queue, uint32_t* message );
|
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
queue_t queue;
|
char* sequence_red = "\x1b[31m";
|
||||||
queue_initialise( &queue );
|
char* sequence_reset = "\x1b[0m";
|
||||||
|
|
||||||
for ( int n = 0; n < ( int )QUEUE_SIZE + 1; n++ )
|
(void)printf( "%salarm!%s", sequence_red, sequence_reset );
|
||||||
{
|
|
||||||
if ( queue_enqueue( &queue, ( uint32_t )n ) )
|
|
||||||
{
|
|
||||||
printf( "failed to queue message: 0x%4x\n", n );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf( "successfully queued message: 0x%4x\n", n );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void queue_initialise( queue_t *queue )
|
|
||||||
{
|
|
||||||
queue->head = 0;
|
|
||||||
queue->tail = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int queue_enqueue( queue_t *queue, uint32_t message )
|
|
||||||
{
|
|
||||||
if ( !queue ) return -1;
|
|
||||||
|
|
||||||
if ( ( queue->head + 1 ) % QUEUE_SIZE == queue->tail )
|
|
||||||
{
|
|
||||||
// queue full
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
queue->queue_data[ queue->head ] = message;
|
|
||||||
queue->head = ( queue->head + 1 ) % QUEUE_SIZE;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int queue_dequeue( queue_t *queue, uint32_t* message )
|
|
||||||
{
|
|
||||||
if ( !queue ) return -1;
|
|
||||||
if ( !message ) return -1;
|
|
||||||
|
|
||||||
if ( queue->head == queue->tail )
|
|
||||||
{
|
|
||||||
// queue empty
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
*message = queue->queue_data[ queue->tail ];
|
|
||||||
queue->tail = ( queue->tail + 1 ) % QUEUE_SIZE;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user