25 #include "CrFwRepErrStub.h" 26 #include "CrFwServerSocket.h" 28 #include "FwSmConstants.h" 29 #include "FwSmConfig.h" 31 #include "FwPrConfig.h" 33 #include "FwPrConstants.h" 35 #include "CrFwOutStreamUserPar.h" 36 #include "CrFwCmpData.h" 49 #include <sys/types.h> 50 #include <sys/socket.h> 51 #include <netinet/in.h> 59 static unsigned short portno = 0;
88 struct sockaddr_in serv_addr,
cli_addr;
89 pthread_t acceptThread;
106 sockfd = socket(AF_INET, SOCK_STREAM, 0);
108 perror(
"CrFwServerSocketInitAction, Socket creation");
113 bzero((
char*) &serv_addr,
sizeof(serv_addr));
114 serv_addr.sin_family = AF_INET;
115 serv_addr.sin_addr.s_addr = INADDR_ANY;
116 serv_addr.sin_port = htons(
portno);
117 if (bind(
sockfd, (
struct sockaddr*) &serv_addr,
sizeof(serv_addr)) < 0) {
118 perror(
"CrFwServerSocketInitAction, Bind Socket");
126 pthread_attr_init(&attr);
127 if (pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) != 0) {
128 perror(
"CrFwServerSocketInitAction, set detached state");
153 perror(
"CrFwServerSocketShutdownAction, Incorrect caller type");
194 printf(
"CrFwServerSocketPoll: ERROR reading from socket\n");
205 printf(
"CrFwServerSocketPoll: invalid packet received from socket\n");
218 if (src == pcktSrc) {
243 printf(
"CrFwServerSocketIsPcktAvail: ERROR reading from socket\n");
255 printf(
"CrFwServerSocketIsPcktAvail: invalid packet received from socket\n");
274 printf(
"CrFwServerSocketPcktHandover: error writing to socket\n");
289 perror(
"CrFwServerSocketInitAction, Socket Accept");
293 if ((flags = fcntl(
newsockfd, F_GETFL, 0)) < 0) {
294 perror(
"CrFwServerSocketInitAction, Set socket attributes");
297 if (fcntl(
newsockfd, F_SETFL, flags | O_NONBLOCK) < 0) {
298 perror(
"CrFwServerSocketInitAction, Set socket attributes");
void CrFwOutStreamDefConfigAction(FwPrDesc_t prDesc)
Default configuration action for an OutStream.
void CrFwServerSocketConfigAction(FwPrDesc_t prDesc)
Configuration action for the server socket.
Type for the Framework Component Data (FCD).
Interface through which framework components access the current time.
CrFwOutcome_t outcome
The outcome of an action or check executed by a state machine or by one of its procedures.
CrFwDestSrc_t CrFwPcktGetSrc(CrFwPckt_t pckt)
Return the source of the command or report encapsulated in a packet.
static int portno
The port number.
static unsigned char * readBuffer
The Read Buffer.
Definition of the OutStream component.
unsigned char CrFwDestSrc_t
Type used for the command or report destination and source.
CrFwPckt_t CrFwPcktMake(CrFwPcktLength_t pcktLength)
Make function for command or report packets.
#define CR_FW_INSTREAM_TYPE
Type identifier for the InStream components.
Interface for creating and accessing a report or command packet.
void CrFwServerSocketInitAction(FwPrDesc_t prDesc)
Initialization action for the server socket.
int CrFwBool_t
Type used for boolean values (1 represent "true" and 0 represents "false").
CrFwBool_t CrFwServerSocketIsPcktAvail(CrFwDestSrc_t src)
Function implementing the Packet Available Check Operation for the server socket. ...
Interface for reporting an error detected by a framework component.
void CrFwInStreamDefInitAction(FwPrDesc_t prDesc)
Default initialization action for an InStream.
void CrFwServerSocketInitCheck(FwPrDesc_t prDesc)
Initialization check for the server socket.
CrFwPcktLength_t CrFwPcktGetLength(CrFwPckt_t pckt)
Return the length (in number of bytes) of a packet.
static int pcktMaxLength
The maximum size of an incoming packet.
void CrFwServerSocketSetPort(unsigned short n)
Set the port number for the socket.
static int newsockfd[2]
The file descriptors for the client sockets.
unsigned short int CrFwPcktLength_t
Type for the packet length.
void CrFwServerSocketPoll()
Poll the server socket to check whether a new packet has arrived.
CrFwPcktLength_t CrFwPcktGetMaxLength()
Return the maximum length of a packet in number of bytes.
void CrFwServerSocketConfigCheck(FwPrDesc_t prDesc)
Configuration check for the server socket.
Definition of the utility functions for the CORDET Framework.
void CrFwOutStreamDefShutdownAction(FwSmDesc_t smDesc)
Default shutdown action for an OutStream.
void CrFwOutStreamDefInitAction(FwPrDesc_t prDesc)
Default initialization action for an OutStream.
static int sockfd
The file descriptor for the socket.
void CrFwInStreamDefShutdownAction(FwSmDesc_t smDesc)
Default shutdown action for an InStream.
static socklen_t clilen
Socket variable.
Definition of Base Component.
void CrFwServerSocketShutdownAction(FwSmDesc_t smDesc)
Shutdown action for the server socket.
static CrFwCmpData_t outStreamData[CR_FW_NOF_OUTSTREAM]
The base data structures for the OutStream State Machines and their Procedures.
char * CrFwPckt_t
Type for packets (see CrFwPckt.h).
static void * acceptThreadEntry(void *ptr)
Entry point for the thread which waits for the incoming connection from the client socket...
static struct sockaddr_in cli_addr
Socket variable.
FwSmDesc_t CrFwInStreamMake(CrFwInstanceId_t i)
Factory function to retrieve the i-th InStream State Machine instance.
CrFwTypeId_t typeId
The type identifier of the framework component.
void CrFwInStreamDefConfigAction(FwPrDesc_t prDesc)
Default configuration action for an InStream.
void CrFwInStreamPcktAvail(FwSmDesc_t smDesc)
Query the middleware for available packets and collect them if they are available.
#define CR_FW_OUTSTREAM_TYPE
Type identifier for the OutStream components.
CrFwBool_t CrFwServerSocketPcktHandover(CrFwPckt_t pckt)
Function implementing the hand-over operation for the server socket.
CrFwPckt_t CrFwServerSocketPcktCollect(CrFwDestSrc_t src)
Function implementing the Packet Collect Operation for the server socket.