A very simple example of a single instance integration without real-time audio on Linux. Ethernet tuning interface. Examples
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <pthread.h>
#include "TargetInfo.h"
const void* g_module_descriptor_table[] =
{
LISTOFCLASSOBJECTS
};
#define MASTER_HEAP_SIZE (1024*1024)
#define FASTB_HEAP_SIZE (1024*1024)
#define SLOW_HEAP_SIZE (1024*1024)
UINT32 g_FastHeapA[MASTER_HEAP_SIZE];
UINT32 g_SlowHeap[MASTER_HEAP_SIZE];
UINT32 g_FastHeapB[MASTER_HEAP_SIZE];
UINT32 AWE_Packet_Buffer[264];
UINT32 AWE_Packet_Buffer_Reply[264];
void error(const char *msg)
{
perror(msg);
exit(1);
}
void *tuningPacketRxThread(void*)
{
int sockfd, newsockfd;
socklen_t clilen;
unsigned char buffer[264];
struct sockaddr_in serv_addr, cli_addr;
int n;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
{
error("ERROR opening socket");
}
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(15098);
if (bind(sockfd, (struct sockaddr *) &serv_addr,
sizeof(serv_addr)) < 0)
{
error("ERROR on binding");
}
listen(sockfd,5);
clilen = sizeof(cli_addr);
newsockfd = accept(sockfd,
(struct sockaddr *) &cli_addr,
&clilen);
if (newsockfd < 0)
error("ERROR on accept");
int i=1;
printf( "entering loop ...\n");
while(1)
{
bzero(AWE_Packet_Buffer,264);
n = read(newsockfd,AWE_Packet_Buffer,264*sizeof(AWE_Packet_Buffer[0]));
if (n < 0) error("ERROR reading from socket");
unsigned int plen = AWE_Packet_Buffer[0]>>16;
n = write(newsockfd,AWE_Packet_Buffer,plen*sizeof(AWE_Packet_Buffer[0]));
if (n < 0) error("ERROR writing to socket");
}
close(newsockfd);
close(sockfd);
}
void InitializeAWEInstance()
{
int ret = 0;
UINT32 module_descriptor_table_size = sizeof(g_module_descriptor_table) / sizeof(g_module_descriptor_table[0]);
g_AWEInstance.
numModules = module_descriptor_table_size;
g_AWEInstance.
pName = TARGET_NAME;
ret =
awe_initPin(g_InputPin, INPUT_CHANNEL_COUNT, NULL);
if (ret != 0)
{
printf("awe_initPin inputPin failed\n");
}
ret =
awe_initPin(g_OutputPin, OUTPUT_CHANNEL_COUNT, NULL);
if (ret != 0)
{
printf("awe_initPin outputPin failed\n");
}
if (ret != 0)
{
printf("awe_init instance 1 failed\n");
}
}
int main( int argc, const char* argv[] )
{
pthread_t rxthread_id;
pthread_t processthread_id;
InitializeAWEInstance();
pthread_create(&rxthread_id, NULL, tuningPacketRxThread, NULL);
pthread_join(rxthread_id, NULL);
while(1)
{
}
}