(clang) terminal control sequence test
This commit is contained in:
+3
-64
@@ -3,73 +3,12 @@
|
||||
#include <stdio.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)
|
||||
{
|
||||
queue_t queue;
|
||||
queue_initialise( &queue );
|
||||
char* sequence_red = "\x1b[31m";
|
||||
char* sequence_reset = "\x1b[0m";
|
||||
|
||||
for ( int n = 0; n < ( int )QUEUE_SIZE + 1; n++ )
|
||||
{
|
||||
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;
|
||||
(void)printf( "%salarm!%s", sequence_red, sequence_reset );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user