From abc0abeeb552c217a84c6f0fb4c65f29b1478068 Mon Sep 17 00:00:00 2001 From: adrcs Date: Fri, 28 Mar 2025 13:01:50 -0600 Subject: [PATCH] Released V1.0 Pi Code --- Raspberry Pi/Read.Me | 7 + Raspberry Pi/ip400spi/Debug/Ip400Spi | Bin 0 -> 171112 bytes Raspberry Pi/ip400spi/Ip400Spi | Bin 0 -> 171888 bytes Raspberry Pi/ip400spi/include/dataq.h | 59 +++++ Raspberry Pi/ip400spi/include/frame.h | 206 +++++++++++++++++ Raspberry Pi/ip400spi/include/logger.h | 35 +++ Raspberry Pi/ip400spi/include/spidefs.h | 143 ++++++++++++ Raspberry Pi/ip400spi/include/timer.h | 38 ++++ Raspberry Pi/ip400spi/include/types.h | 58 +++++ Raspberry Pi/ip400spi/makefile | 56 +++++ Raspberry Pi/ip400spi/runSpi.sh | 1 + Raspberry Pi/ip400spi/src/dataq.c | 70 ++++++ Raspberry Pi/ip400spi/src/dataq.o | Bin 0 -> 49572 bytes Raspberry Pi/ip400spi/src/errno.c | 137 ++++++++++++ Raspberry Pi/ip400spi/src/errno.o | Bin 0 -> 25660 bytes Raspberry Pi/ip400spi/src/logger.c | 69 ++++++ Raspberry Pi/ip400spi/src/logger.o | Bin 0 -> 51248 bytes Raspberry Pi/ip400spi/src/main.c | 164 ++++++++++++++ Raspberry Pi/ip400spi/src/main.o | Bin 0 -> 131128 bytes Raspberry Pi/ip400spi/src/spi.c | 180 +++++++++++++++ Raspberry Pi/ip400spi/src/spi.o | Bin 0 -> 120100 bytes Raspberry Pi/ip400spi/src/spitask.c | 280 ++++++++++++++++++++++++ Raspberry Pi/ip400spi/src/spitask.o | Bin 0 -> 121400 bytes Raspberry Pi/ip400spi/src/timer.c | 182 +++++++++++++++ Raspberry Pi/ip400spi/src/timer.o | Bin 0 -> 141448 bytes Raspberry Pi/ip400spi/src/udp.c | 176 +++++++++++++++ Raspberry Pi/ip400spi/src/udp.o | Bin 0 -> 154504 bytes 27 files changed, 1861 insertions(+) create mode 100644 Raspberry Pi/Read.Me create mode 100644 Raspberry Pi/ip400spi/Debug/Ip400Spi create mode 100644 Raspberry Pi/ip400spi/Ip400Spi create mode 100644 Raspberry Pi/ip400spi/include/dataq.h create mode 100644 Raspberry Pi/ip400spi/include/frame.h create mode 100644 Raspberry Pi/ip400spi/include/logger.h create mode 100644 Raspberry Pi/ip400spi/include/spidefs.h create mode 100644 Raspberry Pi/ip400spi/include/timer.h create mode 100644 Raspberry Pi/ip400spi/include/types.h create mode 100644 Raspberry Pi/ip400spi/makefile create mode 100644 Raspberry Pi/ip400spi/runSpi.sh create mode 100644 Raspberry Pi/ip400spi/src/dataq.c create mode 100644 Raspberry Pi/ip400spi/src/dataq.o create mode 100644 Raspberry Pi/ip400spi/src/errno.c create mode 100644 Raspberry Pi/ip400spi/src/errno.o create mode 100644 Raspberry Pi/ip400spi/src/logger.c create mode 100644 Raspberry Pi/ip400spi/src/logger.o create mode 100644 Raspberry Pi/ip400spi/src/main.c create mode 100644 Raspberry Pi/ip400spi/src/main.o create mode 100644 Raspberry Pi/ip400spi/src/spi.c create mode 100644 Raspberry Pi/ip400spi/src/spi.o create mode 100644 Raspberry Pi/ip400spi/src/spitask.c create mode 100644 Raspberry Pi/ip400spi/src/spitask.o create mode 100644 Raspberry Pi/ip400spi/src/timer.c create mode 100644 Raspberry Pi/ip400spi/src/timer.o create mode 100644 Raspberry Pi/ip400spi/src/udp.c create mode 100644 Raspberry Pi/ip400spi/src/udp.o diff --git a/Raspberry Pi/Read.Me b/Raspberry Pi/Read.Me new file mode 100644 index 0000000..04fdc4c --- /dev/null +++ b/Raspberry Pi/Read.Me @@ -0,0 +1,7 @@ +This code runs on the raspberry Pi. + +IP400Spi is an SPI host for the node SPI. It implements an SPI master to exchange data with the +node, and both sends and receives ethernet packets using UDP. It can be used as a code base +for implementing other applications. + +Details can be found in the documentation directory. \ No newline at end of file diff --git a/Raspberry Pi/ip400spi/Debug/Ip400Spi b/Raspberry Pi/ip400spi/Debug/Ip400Spi new file mode 100644 index 0000000000000000000000000000000000000000..9f5b01f59b3b5f75c3bf0b789bccac0eae82c5d6 GIT binary patch literal 171112 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

Xc56ek3sN08kq8Wv@hTCejbyY3W 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 literal 0 HcmV?d00001 diff --git a/Raspberry Pi/ip400spi/include/dataq.h b/Raspberry Pi/ip400spi/include/dataq.h new file mode 100644 index 0000000..8c8a55f --- /dev/null +++ b/Raspberry Pi/ip400spi/include/dataq.h @@ -0,0 +1,59 @@ +/*--------------------------------------------------------------------------- + Project: WL33_NUCLEO_UART + + Module: + + File Name: queue.h + + Date Created: Jan 9, 2025 + + Author: MartinA + + Description: + + Copyright © 2024-25, Alberta Digital Radio Communications Society, + All rights reserved + + + Revision History: + +---------------------------------------------------------------------------*/ + +#ifndef INC_DATAQ_H_ +#define INC_DATAQ_H_ + +#ifndef __CCALL +#ifdef __cplusplus +#define __CCALL extern "C" +#else +#define __CCALL +#endif +#endif + +#define Q_TYPECAST (struct qelem *) + +// queue structureBOOL checkQueue(FRAME_QUEUE *que) +typedef struct qelem { + struct qelem *q_forw; + struct qelem *q_back; +} QUEUE_ELEM; + +// frame data queue +typedef struct frame_data_queue_t { + struct frame_data_queue_t *q_forw; // forwared pointer + struct frame_data_queue_t *q_back; // backward pointer + void *data; // Frame data + uint16_t length; // data length +} FRAME_QUEUE; + +// queue functions +BOOL enqueFrame(FRAME_QUEUE *que, void *fr); +void *dequeFrame(FRAME_QUEUE *que); +BOOL checkQueue(FRAME_QUEUE *que); + +// queue management +void insque (struct qelem *elem, struct qelem *pred); +void remque (struct qelem *elem); + + +#endif /* INC_DATAQ_H_ */ diff --git a/Raspberry Pi/ip400spi/include/frame.h b/Raspberry Pi/ip400spi/include/frame.h new file mode 100644 index 0000000..b256961 --- /dev/null +++ b/Raspberry Pi/ip400spi/include/frame.h @@ -0,0 +1,206 @@ +/*--------------------------------------------------------------------------- + Project: WL33_NUCLEO_UART + + Module: + + File Name: frame.h + + Date Created: Jan 8, 2025 + + Author: MartinA + + Description: + + Copyright © 2024-25, Alberta Digital Radio Communications Society, + All rights reserved + + + Revision History: + +---------------------------------------------------------------------------*/ + +#ifndef FRAME_H_ +#define FRAME_H_ + +#include +#include "types.h" + +// frame defines +#define N_CALL 4 // octets in the excess-40 compressed callsign +#define MAX_CALL 6 // max callsign size +#define EXT_CALL 4*MAX_CALL // extended call sign field +#define PAYLOAD_MIN 56 // min octets in payload +#define PAYLOAD_MAX 1053 // max octets in payload +#define MAX_CALL_BUFFER 20 // max buffering for callsign in payload +#define N_FEC 4 // number of bytes in the FEC +#define BROADCAST_ADDR 0xFF // broadcast address + +#define MAX_HOP_COUNT 15 // max hop count + +// transmit states +enum { + TX_IDLE=0, // idle - waiting for work + TX_SENDING, // sending a frame + TX_DONE // done +}; + +// radio error register +#define SEQ_COMPLETE_ERR 0x8000 // Sequencer error +#define SEQ_ACT_TIMEOUT 0x4000 // Sequencer action timeout +#define PLL_CALAMP_ERR 0x0800 // VCO amplitude calibration error +#define PLL_CALFREQ_ERR 0x0400 // VCO frequency calibration error +#define PLL_UNLOCK_ERR 0x0200 // PLL is unlocked +#define PLL_LOCK_FAIL 0x0100 // PLL lock failure +#define DBM_FIFO_ERR 0x0020 // Data buffer failure +#define N_RADIO_ERRS 7 // number of the above + +// radio FSM states +enum fsm_states_e { + FSM_IDLE=0, // idle + FSM_ENA_RF_REG, // enable RF registers + FSM_WAIT_ACTIVE2, // wait for active 2 + FSM_ACTIVE2, // active 2 + FSM_ENA_CURR, // enable current + FSM_SYNTH_SETUP, // synth setup + FSM_CALIB_VCO, // VCO calibration + FSM_LOCKRXTX, // lock Rx and Rx + FSM_LOCKONTX, // lock on Rx + FSM_EN_PA, // enable PA + FSM_TX, // transmit + FSM_PA_DWN_ANA, // Analog power down + FSM_END_TX, // end transmit + FSM_LOCKONRX, // lock on Rx + FSM_EN_RX, // Enable Rx + FSM_EN_LNA, // enable LNA + FSM_RX, // recieve + FSM_END_RX, // end rx + FSM_SYNTH_PWDN, // synth power down + FSM_N_FSM_STATES +}; + +// header flags +typedef struct frame_flags_t { + unsigned hop_count: 4; // hop count + unsigned coding: 4; // coding method + unsigned compression: 2; // compression method + unsigned unused: 1; // unused + unsigned srcExt: 1; // source call is extended + unsigned destExt: 1; // dest call is extended + unsigned command: 1; // command packet + unsigned noconnect: 1; // connectionless + unsigned repeat: 1; // repeat flag +} IP400_FLAGS; + +// callsign field +typedef struct callsign_t { + union { + uint8_t bytes[N_CALL]; // compressed callsign + uint32_t encoded; + } callbytes; + uint16_t port; // port information +} IP400_CALL; + +// complete frame +typedef struct ip400_frame_t { + IP400_CALL source; // source call sign + IP400_CALL dest; // destination call sign + union { + IP400_FLAGS flags; // flag bit field + uint16_t allflags; // all flags + } flagfld; + uint32_t seqNum; // packet sequence number + void *buf; // data to send + uint16_t length; // data length +} IP400_FRAME; + +// min/max payload sizes +#define IP_400_PORT_SIZE sizeof(uint16_t) +#define IP_400_CALL_SIZE (N_CALL + IP_400_PORT_SIZE) +#define IP_400_FLAG_SIZE sizeof(uint16_t) +#define IP_400_HDR_SIZE (2*IP_400_CALL_SIZE + IP_400_FLAG_SIZE) +#define IP_400_LEN_SIZE sizeof(uint16_t) +#define MIN_FRAME_SIZE sizeof(IP400_FRAME) + PAYLOAD_MIN + N_FEC +#define MAX_FRAME_SIZE MIN_FRAME_SIZE - PAYLOAD_MIN + PAYLOAD_MAX + +// packet types +enum { + UTF8_TEXT_PACKET=0, // Text packet + COMPRESSED_AUDIO, // compressed audio packet + COMPREESSD_VIDEO, // compressed video packet + DATA_PACKET, // data packet + PING_PACKET, // ping packet + IP_ENCAPSULATED, // IP encapsulated packet + AX_25_PACKET, // AX.25 encapsulated packet + RFC4733_DTMF, // DTMF packet + DMR_FRAME, // DMR Frame + DSTAR_FRAME, // Dstar Frame + P25_FRAME, // TIA project 25 + NXDN_FRAME, // NXDN + M17_FRAME, // M17 + TBD_1, + TBD_2, + LOCAL_COMMAND // local command frame +}; + +// audio compression types +enum { + AUDIO_RAW, // raw 16-bit PCM + AUDIO_ULAW, // mu law compression + AUDIO_CODEC2, // codec 2 encoded + AUDIO_AMBE // AMBE encoded +}; + +// H.246 Video compression +enum { + H264_240_180_24, // H.264: 240x180, 24FPS + H264_320_240_24, // H.264: 320x240, 24FPS + H264_480_360_12, // H.264: 480x360, 12FPS + H264_640_480_6 // H.264: 640x480, 6FPS +}; + +// callsign fields +enum { + SRC_CALLSIGN=0, // dest for encode is source callsign + DEST_CALLSIGN // dest for encode is dest callsign +}; + +// frame stats +typedef struct frame_stats_t { + uint32_t TxFrameCnt; // transmit frame count + uint32_t RxFrameCnt; // good receive frame count + uint32_t CRCErrors; // CRC Errors + uint32_t TimeOuts; // Timeouts + uint32_t lastRSSI; // last RSSI reading + uint32_t framesOK; // processed frames + uint32_t dropped; // rejected frames + uint32_t duplicates; // duplicates + uint32_t nBeacons; // number of beacons processed + uint32_t nRepeated; // repeated frames +} FRAME_STATS; + +// packet types +#define ICMP_TYPE 1 // control message type +#define ENC_IP_TYPE 4 // encapsulated IP +#define AUDIO_TYPE 11 // audio packets +#define TEXT_TYPE 17 // port for text chat (UDP) +#define VIDEO_TYPE 75 // H.264 video +#define ENC_AX25_TYPE 93 // encapsulated AX25 packets + +uint8_t getFrameStatus(void); + +// references +uint8_t callEncode(char *callsign, uint16_t port, IP400_FRAME *frame, uint8_t dest, uint8_t offset); +BOOL callDecode(IP400_CALL *encCall, char *callsign, uint16_t *port); + +// frame senders +BOOL SendTextFrame(char *srcCall, uint16_t srcPort, char *destCall, uint16_t dstPort, char *buf, uint16_t length, BOOL repeat); +void SendBeaconFrame(char *srcCall, uint8_t *payload, int bcnlen); +// +BOOL EnqueChatFrame(void *Frame); // queue a chat frame +FRAME_STATS *GetFrameStats(void); // return the frame stats +uint32_t GetRadioStatus(void); // get the radio status +uint8_t GetFSMState(void); // get FSM state +// +uint8_t getFrameStatus(void); // get the frame status + +#endif /* FRAME_H_ */ diff --git a/Raspberry Pi/ip400spi/include/logger.h b/Raspberry Pi/ip400spi/include/logger.h new file mode 100644 index 0000000..4461d13 --- /dev/null +++ b/Raspberry Pi/ip400spi/include/logger.h @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------- + Project: Ip400Spi + + File Name: logger.h + + Author: root + + Creation Date: Mar. 6, 2025 + + Description: Definitions for the logger + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version, provided this copyright notice + is included. + + Copyright (c) 2024-25 Alberta Digital Radio Communications Society + +------------------------------------------------------------------char *geterrno(int errnum)---------*/ + +#ifndef INCLUDE_LOGGER_H_ +#define INCLUDE_LOGGER_H_ + +// severity +#define LOG_DEBUG 0 // debug mode +#define LOG_NOTICE 1 // information +#define LOG_ERROR 2 // error message +#define LOG_FATAL 3 // fatal error (causes exit) + +void openLog(uint8_t debug); +void logger(int severity, char *format, ...); +char *geterrno(int errnum); + +#endif /* INCLUDE_LOGGER_H_ */ diff --git a/Raspberry Pi/ip400spi/include/spidefs.h b/Raspberry Pi/ip400spi/include/spidefs.h new file mode 100644 index 0000000..8e32825 --- /dev/null +++ b/Raspberry Pi/ip400spi/include/spidefs.h @@ -0,0 +1,143 @@ +/*--------------------------------------------------------------------------- + Project: Ip400Spi + + File Name: spidefs.h + + Author: root + + Creation Date: Mar. 6, 2025 + + Description: Definitions for the SPI interface + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version, provided this copyright notice + is included. + + Copyright (c) 2024-25 Alberta Digital Radio Communications Society + +---------------------------------------------------------------------------*/ +#ifndef SPIDEFSH +#define SPIDEFSH + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "types.h" +#include "frame.h" + +// typedefs +typedef uint8_t SPI_WORD; // single byte +typedef uint16_t SPI_DWORD; // double byte +typedef uint32_t SPI_QWORD; // quad word + +// SPI defines +enum { + SPI_0_0=0, // SPI device 0 CS 0 + SPI_0_1, // SPI device 0 CS 1 + SPI_1_0, // SPI device 1 CS 0 + SPI_1_1, // SPI device 1 CS 1 + SPI_1_2, // SPI device 1 CS 2 + N_SPI // number of SPI devices +}; + +#define SPI_0_DEV_0 "/dev/spidev0.0" +#define SPI_0_DEV_1 "/dev/spidev0.1" +#define SPI_1_DEV_0 "/dev/spidev1.0" +#define SPI_1_DEV_1 "/dev/spidev1.1" +#define SPI_1_DEV_2 "/dev/spidev1.2" +#define SPI_SPEED 500000 +#define SPI_SLOW_SPEED 100000 +#define SPI_NBITS 8 // All Spi's are 8 bits +#define SPI_RESET_COUNT 10 // number of times to hold spi reset + +// status returns from updates +#define SPI_REG_SUCCESS 0 // successful completion +#define SPI_REG_INVALID -1 // invalid register called + +// new def's imported from node code +#define SPI_BUFFER_LEN 400 // 400 bytes/transfer +#define SPI_RAW_LEN SPI_BUFFER_LEN + sizeof(struct spi_hdr_t) + +// status values +enum { + NO_FRAME=0, // no frame data to process + SINGLE_FRAME, // single frame + FRAME_FRAGMENT, // fragment + LAST_FRAGMENT, // last fragment + N_FRAGS // number of frags +}; + +#define PAYLOAD_MAX 1053 // max frame payload + +// SPI frame header +struct spi_hdr_t { + uint8_t eye[4]; // 'IP4X' + uint8_t status; // status byte + uint8_t offset_hi; // high offset + uint8_t offset_lo; // low offset + uint8_t length_hi; // length hi + uint8_t length_lo; // length lo + uint8_t fromCall[N_CALL]; // from callsign + uint8_t fromPort[IP_400_PORT_SIZE]; // from port + uint8_t toCall[N_CALL]; // to callsign + uint8_t toPort[IP_400_PORT_SIZE]; // to port + uint8_t coding; // packet coding + uint8_t hopCount; // hop count + uint8_t flags; // remaining flags +}; + +// data buffer struct +typedef union { + struct { + struct spi_hdr_t hdr; // header + uint8_t buffer[SPI_BUFFER_LEN]; + } spiData; + uint8_t rawData[SPI_RAW_LEN]; +} SPI_BUFFER; + +// SPI struct +typedef struct spi_config_t { + uint8_t mode; // mode + uint8_t bitsPerWord; // bits/word + uint32_t speed; // speed + int fd; // file descriptor + uint8_t debug; // debug +} SPI_CONFIG; + +// SPI data frame +typedef struct spi_data_frame_t { + void *buffer; // data buffer + uint16_t length; // length +} SPI_DATA_FRAME; + +// SPI task +int spi_lookup(char *devName); +BOOL spiTaskInit(int spiDev); +void spiTask(void); + +// SPI functions +void spi_setup(int device, uint8_t spiMode, uint8_t spibitsPerWord, int spiSpeed, uint8_t debug); +int spi_open(int device); +int spi_close(int device); +int spi_fdtransfer(int device, SPI_WORD *txdata, SPI_WORD *rxdata, int length); +int spi_hdread(int fd, uint8_t *data, uint16_t length); +int spi_hdwrite(int fd, uint8_t *data, uint16_t length); + +// data queuing functions +BOOL EnqueSPIFrame(void *spiFrame); +BOOL isIP400Frame(uint8_t *eye); + +// UDP stuff +BOOL setup_udp_socket(char *hostname, int hostport, int localport); +BOOL send_udp_packet(void *data, uint16_t length); + +#endif + diff --git a/Raspberry Pi/ip400spi/include/timer.h b/Raspberry Pi/ip400spi/include/timer.h new file mode 100644 index 0000000..9455ae6 --- /dev/null +++ b/Raspberry Pi/ip400spi/include/timer.h @@ -0,0 +1,38 @@ +/*--------------------------------------------------------------------------- + Project: Ip400Spi + + File Name: timer.h + + Author: root + + Creation Date: Mar. 6, 2025 + + Description: Definitions for the timer and associated tasks + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version, provided this copyright notice + is included. + + Copyright (c) 2024-25 Alberta Digital Radio Communications Society + +---------------------------------------------------------------------------*/ + +#ifndef INCLUDE_TIMER_H_ +#define INCLUDE_TIMER_H_ + +#include "types.h" + +// definitions +#define TIMER_VALUE 20 // 20 ms between polls + +#define MSTOUS(x) ((int)x*(int)1000) +#define MSTONS(x) ((long long)x*(long long)1000000) + +// functions +BOOL startTimer(int interval, void (*exec_function)(void)); +void stopTimer(void); + + +#endif /* INCLUDE_TIMER_H_ */ diff --git a/Raspberry Pi/ip400spi/include/types.h b/Raspberry Pi/ip400spi/include/types.h new file mode 100644 index 0000000..2c45535 --- /dev/null +++ b/Raspberry Pi/ip400spi/include/types.h @@ -0,0 +1,58 @@ +/*--------------------------------------------------------------------------- + Project: Ip400Spi + + Module: Type definitions + + File Name: types.h + + Date Created: Jan 9, 2025 + + Author: MartinA + + Description: Useful data types + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version, provided this copyright notice + is included. + + Copyright (c) 2024-25 Alberta Digital Radio Communications Society + + + Revision History: + +---------------------------------------------------------------------------*/ + +#ifndef INC_TYPES_H_ +#define INC_TYPES_H_ + +#include +#include + +// boolean type +typedef uint8_t BOOL; // boolean +typedef uint8_t BOOLEAN; // alternate +typedef uint8_t boolean; // another alternate + +#ifndef TRUE +#define TRUE ((BOOL)1U) +#endif + +#ifndef FALSE +#define FALSE ((BOOL)0U) +#endif + +#ifndef __CCALL +#ifdef __cplusplus +#define __CCALL extern "C" +#else +#define __CCALL +#endif +#endif + +// macros +#define islower(c) ((c >= 'a') && (c <= 'z')) +#define toupper(c) (c-0x20) + +#endif /* INC_TYPES_H_ */ diff --git a/Raspberry Pi/ip400spi/makefile b/Raspberry Pi/ip400spi/makefile new file mode 100644 index 0000000..4c637af --- /dev/null +++ b/Raspberry Pi/ip400spi/makefile @@ -0,0 +1,56 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +RM := rm -rf + +C_SRCS += \ +./src/dataq.c \ +./src/errno.c \ +./src/logger.c \ +./src/main.c \ +./src/spi.c \ +./src/spitask.c \ +./src/timer.c \ +./src/udp.c + +OBJS += \ +./src/dataq.o \ +./src/errno.o \ +./src/logger.o \ +./src/main.o \ +./src/spi.o \ +./src/spitask.o \ +./src/timer.o \ +./src/udp.o + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: Ip400Spi + +# Tool invocations +Ip400Spi: $(OBJS) makefile + @echo 'Building target: $@' + @echo 'Invoking: Cross GCC Linker' + arm-linux-gnueabihf-gcc -o "Ip400Spi" $(OBJS) -lpthread -lm -lrt + @echo 'Finished building target: $@' + @echo ' ' + + +# Each subdirectory must supply rules for building sources it contributes +src/%.o: src/%.c + @echo 'Building file: $<' + @echo 'Invoking: Cross GCC Compiler' + arm-linux-gnueabihf-gcc -I"./include" -O0 -g3 -Wall -c -fmessage-length=0 -pthread -o "$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + +# Other Targets + +clean: + -$(RM) Ip400Spi + -$(RM) src/*.o + -@echo ' ' + +-include ../makefile.targets diff --git a/Raspberry Pi/ip400spi/runSpi.sh b/Raspberry Pi/ip400spi/runSpi.sh new file mode 100644 index 0000000..9488695 --- /dev/null +++ b/Raspberry Pi/ip400spi/runSpi.sh @@ -0,0 +1 @@ +./Ip400Spi -s /dev/spidev0.0 -n 10.93.13.104 -p 8200 -m 8400 -d 1 diff --git a/Raspberry Pi/ip400spi/src/dataq.c b/Raspberry Pi/ip400spi/src/dataq.c new file mode 100644 index 0000000..e0e64f6 --- /dev/null +++ b/Raspberry Pi/ip400spi/src/dataq.c @@ -0,0 +1,70 @@ +/*--------------------------------------------------------------------------- + Project: ip400SPI + + File Name: dataq.c + + Author: MartinA + + Description: This module enques and deques an IP400 Frame type on a queue + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version, provided this copyright notice + is included. + + Copyright (c) Alberta Digital Radio Communications Society + All rights reserved. + + Revision History: + +---------------------------------------------------------------------------*/ +#include + +#include "types.h" +#include "dataq.h" + + +/* + * Enque a frame. The frame data buffer must have + * alredy been allocated + */ +BOOL enqueFrame(FRAME_QUEUE *que, void *fr) +{ + FRAME_QUEUE *f; + if((f = malloc(sizeof(FRAME_QUEUE))) == NULL) + return FALSE; + + // set the frame buffer + f->data = fr; + + insque((QUEUE_ELEM *)f, (QUEUE_ELEM *)que->q_back); + return TRUE; + +} + +/* + * Deqeue a frame + * Returns null if no frame is one the queue + */ +void *dequeFrame(FRAME_QUEUE *que) +{ + void *ipFrame; + + if(que->q_back == que) + return NULL; + + FRAME_QUEUE *f = que->q_forw; + remque((struct qelem *)f); + + ipFrame = f->data; + + free(f); + return ipFrame; +} + +// check to see if a transmit frame is queued up +BOOL checkQueue(FRAME_QUEUE *que) +{ + return (que->q_back == que); +} diff --git a/Raspberry Pi/ip400spi/src/dataq.o b/Raspberry Pi/ip400spi/src/dataq.o new file mode 100644 index 0000000000000000000000000000000000000000..04cbe45f535407218a36c70a2d250ad87579becf GIT binary patch literal 49572 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 Si4XFZy9)IEmn{Ue<^Df@zQ;rW literal 0 HcmV?d00001 diff --git a/Raspberry Pi/ip400spi/src/logger.c b/Raspberry Pi/ip400spi/src/logger.c new file mode 100644 index 0000000..dbd1073 --- /dev/null +++ b/Raspberry Pi/ip400spi/src/logger.c @@ -0,0 +1,69 @@ +/*--------------------------------------------------------------------------- + Project: Ip400spi + + Module: Logger + + File Name: logger.c + + Author: MartinA + + Revision: 1.00 + + Description: Log error messages in the system + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version, provided this copyright notice + is included. + + Copyright (c) 2024-25 Alberta Digital Radio Communications Society + + Revision History: + +---------------------------------------------------------------------------*/ +#include +#include + +#include "types.h" +#include "logger.h" + +BOOL logDebug = FALSE; + +void openLog(BOOL debug) +{ + logDebug = debug; +} + +// log an error or info message +void logger(int severity, char *format, ...) +{ + switch(severity) { + + case LOG_DEBUG: + if(!logDebug) + return; + fprintf(stderr, "DEBUG: "); + break; + + case LOG_NOTICE: + fprintf(stderr, "Notice: "); + break; + + case LOG_ERROR: + fprintf(stderr, "ERROR: "); + break; + + case LOG_FATAL: + fprintf(stderr, "FATAL: "); + break; + } + + // process the arg list + va_list argptr; + va_start(argptr, format); + vfprintf(stderr, format, argptr); + va_end(argptr); +} + + diff --git a/Raspberry Pi/ip400spi/src/logger.o b/Raspberry Pi/ip400spi/src/logger.o new file mode 100644 index 0000000000000000000000000000000000000000..d6c64e217055cd20e69907f418a5558c8ec21cab GIT binary patch literal 51248 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 literal 0 HcmV?d00001 diff --git a/Raspberry Pi/ip400spi/src/main.c b/Raspberry Pi/ip400spi/src/main.c new file mode 100644 index 0000000..d300cac --- /dev/null +++ b/Raspberry Pi/ip400spi/src/main.c @@ -0,0 +1,164 @@ +/*--------------------------------------------------------------------------- + Project: Ip400Spi + + File Name: main.c + + Author: root + + Creation Date: Mar. 6, 2025 + + Description: Mainline for SPI daemon + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version, provided this copyright notice + is included. + + Copyright (c) 2024-25 Alberta Digital Radio Communications Society + +---------------------------------------------------------------------------*/ +#include +#include +#include +#include +#include +#include + +#include "types.h" +#include "logger.h" +#include "spidefs.h" +#include "timer.h" + +// SPI device +char spiDev[20]; + +int debugFlag; +char hostname[50]; // name of remote host +uint16_t hostport; // host port +uint16_t localport; // my port + +// debug modes +#define DEBUG_LOG 0x01 // debug log +#define DEBUG_SPI 0x02 // debug SPI + +// timer or interrupt mode +#define NO_INTERRUPT 0 // do not use interrupts + +// forward refs +void show_help(char *name); + +// catch a control-c or other terminationTIMER_VALUE +void sighandler(int s) +{ + logger(LOG_ERROR, "\n3000Caught signal %d\n",s); + stopTimer(); + exit(1); +} + +int main(int argc, char *argv[]) +{ + int c; + + /* + // set up control/c catch + struct sigaction sigIntHandler; + + sigIntHandler.sa_handler = sighandler; + sigemptyset(&sigIntHandler.sa_mask); + sigIntHandler.sa_flags = 0; + sigaction(SIGINT, &si3000gIntHandler, NULL); + */ + + // set default SPI + strcpy(spiDev, SPI_0_DEV_0); + debugFlag = FALSE; + + // parse command line parameters + while ((c = getopt(argc, argv, "s:d:hn:p:m:")) != -1) { + + // process the command line + switch((char )c) { + + // SPI device + case 's': + strcpy(spiDev, optarg); + break; + + // host name + case 'n': + strcpy(hostname, optarg); + break; + + // host port + case 'p': + sscanf(optarg, "%hd", &hostport); + break; + + // my port + case 'm': + sscanf(optarg, "%hd", &localport); + break; + + // debug + case 'd': + sscanf(optarg, "%d", &debugFlag); + break; + + // help + case 'h': + show_help(argv[0]); + break; + } + } + + // open the log and test enabled + openLog(debugFlag&DEBUG_LOG); + logger(LOG_DEBUG, "Debug logging enabled \n"); + + int spiDevNum = spi_lookup(spiDev); + if(spiDevNum == -1) { + logger(LOG_FATAL, "Cannot find device name %s\n", spiDev); + exit(100); + } + + spi_setup(spiDevNum, SPI_MODE_0, SPI_NBITS, SPI_SPEED, debugFlag&DEBUG_SPI); + + if(!spiTaskInit(spiDevNum)) { + logger(LOG_FATAL, "Cannot open SPI device %s\n", spiDev); + exit(100); + } + + if(!setup_udp_socket(hostname, hostport, localport)) { + logger(LOG_FATAL, "Cannot create UDP socket to %s:%d\n", hostname, hostport, localport); + exit(100); + } + +#if NO_INTERRUPT + while(1) { + spiTask(); +// for(int i=0;i<2;i++) + usleep(MSTOUS(TIMER_VALUE)); + } + forced syntax error; // force error if this mode is invoked +#else + if(!startTimer(TIMER_VALUE, &spiTask)) { + logger(LOG_FATAL, "Could not start the SPI task\n"); + exit(101); + } +#endif + + return EXIT_SUCCESS; +} + +void show_help(char *name) { + fprintf(stderr, + "Usage: %s -[sdhnpm]\n" + "-s SPI device name\n" + "-d debug mode \n" + "-h print this help message\n" + "-n remote host name\n" + "-p remote port number" + "-m my port number", + name); +} diff --git a/Raspberry Pi/ip400spi/src/main.o b/Raspberry Pi/ip400spi/src/main.o new file mode 100644 index 0000000000000000000000000000000000000000..23f0bbab2f04e49a1a913d8c973e071085e39df9 GIT binary patch literal 131128 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
*}`0G6ZdU|5qaL<$O}L77asaN{gR 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 + +#include "spidefs.h" +#include "logger.h" + +// translate SPI logical devices to real devices +char *devnames[N_SPI] = { + SPI_0_DEV_0, + SPI_0_DEV_1, + SPI_1_DEV_0, + SPI_1_DEV_1, + SPI_1_DEV_2 +}; + +SPI_CONFIG spi_config[N_SPI]; // SPI configurations + +/* + * setup the SPI devices + */ +void spi_setup(int device, uint8_t spiMode, uint8_t spibitsPerWord, int spiSpeed, uint8_t debug) +{ + spi_config[device].mode = spiMode; + spi_config[device].bitsPerWord = spibitsPerWord; + spi_config[device].speed = spiSpeed; + spi_config[device].debug = debug; + +} + +int spi_lookup(char *devName) +{ + for(int i=0;i~2VCt|5&;nkf`Tr3iwcfYMY1 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 literal 0 HcmV?d00001 diff --git a/Raspberry Pi/ip400spi/src/spitask.c b/Raspberry Pi/ip400spi/src/spitask.c new file mode 100644 index 0000000..597298a --- /dev/null +++ b/Raspberry Pi/ip400spi/src/spitask.c @@ -0,0 +1,280 @@ +/*--------------------------------------------------------------------------- + Project: Ip400Spi + + File Name: spitask.c + + Author: VE6VH + + Creation Date: Mar. 6, 2025 + + Description: {Definition here...) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version, provided this copyright notice + is included. + + Copyright (c) 2024-25 Alberta Digital Radio Communications Society + +---------------------------------------------------------------------------*/ +#include +#include +#include + +#include "types.h" +#include "spidefs.h" +#include "logger.h" +#include "dataq.h" + +// locals +int spiDevFD; // spi device file descriptor +int spiDevNum; // device number + +// transmittter states +enum { + SPITXIDLE=0, // idle + SPITXFRAG // next fragment +}; + +// receiver states +enum { + SPIRXIDLE=0, // idle + SPIRXFRAG // next fragment +}; + +uint8_t SPITxState; // transmitter state +uint8_t SPIRxState; // receiver state + +// SPI transmit frame queue +FRAME_QUEUE SPITxQueue; + +// frame buffers +static SPI_BUFFER spiTxBuffer; +static SPI_BUFFER spiRxBuffer; + +static union { + struct { + struct spi_hdr_t hdr; // header + uint8_t buffer[PAYLOAD_MAX]; + } spiData; + uint8_t rawData[PAYLOAD_MAX + sizeof(struct spi_hdr_t)]; +} rxFrameBuffer; + +// frame validator +BOOL isIP400Frame(uint8_t *eye); + +BOOL EnqueSPIFrame(void *spiFrame) +{ + SPI_DATA_FRAME *qFrame, *SrcFrame = (SPI_DATA_FRAME *)spiFrame; + uint8_t *frameBuffer; + + // allocate an IP400 frame + if((qFrame=malloc(sizeof(SPI_DATA_FRAME)))== NULL) + return FALSE; + memcpy(qFrame, SrcFrame, sizeof(SPI_DATA_FRAME)); + + // alloc the data portion of the frame + if((frameBuffer=malloc(SrcFrame->length)) == NULL) { + return FALSE; + } + + memcpy(frameBuffer, (uint8_t *)SrcFrame->buffer, SrcFrame->length); + qFrame->buffer = frameBuffer; + qFrame->length = SrcFrame->length; + + if(!enqueFrame(&SPITxQueue, qFrame)) + return FALSE; + + return TRUE; +} + +/* + * Initialize the SPI task + */ +BOOL spiTaskInit(int spiDev) +{ + // open the SPI device + if((spiDevFD = spi_open(spiDev)) == -1) { + logger(LOG_ERROR, "Unable to open SPI device %d\n", spiDev); + return FALSE; + } + + spiTxBuffer.spiData.hdr.status = NO_FRAME; + spiRxBuffer.spiData.hdr.status = NO_FRAME; + + // init the tx queue + SPITxQueue.q_forw = &SPITxQueue; + SPITxQueue.q_back = &SPITxQueue; + + // init vars + spiDevNum = spiDev; + SPITxState = SPITXIDLE; + SPIRxState = SPIRXIDLE; + + rxFrameBuffer.spiData.hdr.eye[0] = 'I'; + rxFrameBuffer.spiData.hdr.eye[1] = 'P'; + rxFrameBuffer.spiData.hdr.eye[2] = (400 >> 8) & 0xff; + rxFrameBuffer.spiData.hdr.eye[3] = (400 & 0xff); + + return TRUE; +} + +/* + * Run the SPI functions. + * Poll receiver for an inbound frame and read it. Add it to the frame queue. + * Poll transmit queue for an outbound frame and send it. + */ +void spiTask(void) +{ + static SPI_DATA_FRAME *txFrame; + static uint16_t txSegLength; + static uint8_t *prxData; + static uint16_t rxSegLen; + + memset(spiRxBuffer.rawData, 0, SPI_RAW_LEN); + + // do an exchange with the STM32 + int nxferred = spi_fdtransfer(spiDevNum, spiTxBuffer.rawData, spiRxBuffer.rawData, SPI_RAW_LEN); + if(nxferred == -1) { + logger(LOG_ERROR, "SPI transmit error %d: %s\n", nxferred, geterrno(nxferred)); + } + + /* + * Inbound frame. Reassemble fragments if needed... + */ + // we have to declare these here, as teh !#)$*& compiler will not allow declarations in statements + uint8_t rstat = NO_FRAME; + uint8_t fragStat; + uint16_t offset; + uint16_t frameLen=0, prevLen=0; + + switch(SPIRxState) { + + case SPIRXIDLE: + rstat = spiRxBuffer.spiData.hdr.status; + + // next validate the frame type + if((rstat == NO_FRAME) || (rstat >= N_FRAGS)) + break; + + // validate the eye of the frame + if(!isIP400Frame(spiRxBuffer.spiData.hdr.eye)) + break; + + // copy the header fields + memcpy(&rxFrameBuffer.spiData.hdr, &spiRxBuffer.spiData.hdr, sizeof(struct spi_hdr_t)); + + // copy data fields + prxData = rxFrameBuffer.spiData.buffer; + rxSegLen = (spiRxBuffer.spiData.hdr.length_hi << 8) + spiRxBuffer.spiData.hdr.length_lo; + memcpy(prxData, spiRxBuffer.spiData.buffer, rxSegLen); + + if(rstat != SINGLE_FRAME) { + SPIRxState = SPIRXFRAG; + } else { + rxFrameBuffer.spiData.hdr.status = SINGLE_FRAME; + rxFrameBuffer.spiData.hdr.length_hi = (rxSegLen >> 8); + rxFrameBuffer.spiData.hdr.length_lo = (rxSegLen & 0xFF); + rxFrameBuffer.spiData.hdr.offset_hi = rxFrameBuffer.spiData.hdr.offset_lo = 0; + send_udp_packet(rxFrameBuffer.rawData, rxSegLen+sizeof(struct spi_hdr_t)); + SPIRxState = SPIRXIDLE; + spiRxBuffer.spiData.hdr.status = N_FRAGS; // set an invalid frame type + } + break; + + case SPIRXFRAG: + fragStat = spiRxBuffer.spiData.hdr.status; + offset = ((uint16_t)spiTxBuffer.spiData.hdr.offset_hi << 8) + (uint16_t)spiTxBuffer.spiData.hdr.offset_lo; + prxData = rxFrameBuffer.rawData + offset; + rxSegLen = (spiRxBuffer.spiData.hdr.length_hi << 8) + spiRxBuffer.spiData.hdr.length_lo; + memcpy(prxData, spiRxBuffer.spiData.buffer, rxSegLen); + + if(fragStat == LAST_FRAGMENT) { + frameLen = offset + rxSegLen; + spiRxBuffer.spiData.hdr.length_hi = (frameLen >> 8); + spiRxBuffer.spiData.hdr.length_lo = (frameLen & 0xFF); + // process frame for tx here... + SPIRxState = SPIRXIDLE; // placeholder + } + break; + } + + /* + * process an outbound frame + * Fragment it if longer that 500 byte, s->length);s + */ + switch(SPITxState) { + + case SPITXIDLE: + if((txFrame=dequeFrame(&SPITxQueue)) == NULL) { + spiTxBuffer.spiData.hdr.status = NO_FRAME; + break; + } + txSegLength = txFrame->length; + spiTxBuffer.spiData.hdr.status = SINGLE_FRAME; + + // fragment the frame if needed + if(txFrame->length > SPI_BUFFER_LEN) { + txSegLength = SPI_BUFFER_LEN; + spiTxBuffer.spiData.hdr.status = FRAME_FRAGMENT; + SPITxState = SPITXFRAG; + } + + // send the frame and/or fragment + memcpy(spiTxBuffer.rawData, txFrame->buffer, txSegLength); + spiTxBuffer.spiData.hdr.offset_hi = spiTxBuffer.spiData.hdr.offset_lo = 0; + + // release memory if only a single frame + if(spiTxBuffer.spiData.hdr.status == SINGLE_FRAME) + { + free(txFrame->buffer); + free(txFrame); + } + break; + + case SPITXFRAG: + offset = ((uint16_t)(spiTxBuffer.spiData.hdr.offset_hi) << 8) + (uint16_t)spiTxBuffer.spiData.hdr.offset_lo; + prevLen = ((uint16_t)(spiTxBuffer.spiData.hdr.length_hi) << 8) + (uint16_t)spiTxBuffer.spiData.hdr.length_lo; + offset += prevLen; + txFrame->length -= prevLen; + txSegLength = txFrame->length; + if(txFrame->length > SPI_BUFFER_LEN) { + spiTxBuffer.spiData.hdr.status = FRAME_FRAGMENT; + txSegLength = SPI_BUFFER_LEN; + } else { + spiTxBuffer.spiData.hdr.status = LAST_FRAGMENT; + SPITxState = SPITXIDLE; + } + + // send the next fragment + void *fragAddr = txFrame->buffer + offset; + memcpy(spiTxBuffer.spiData.buffer, fragAddr, txSegLength); + spiTxBuffer.spiData.hdr.offset_hi = (offset >> 8); + spiTxBuffer.spiData.hdr.offset_lo = (offset & 0xff); + spiTxBuffer.spiData.hdr.length_hi = (txSegLength >> 8); + spiTxBuffer.spiData.hdr.length_lo = (txSegLength & 0xFF); + + // done with frame + if(spiTxBuffer.spiData.hdr.status == LAST_FRAGMENT) + { + free(txFrame->buffer); + free(txFrame); + } + break; + } + +} + +// validate the frame eye +BOOL isIP400Frame(uint8_t *eye) +{ + if((eye[0] != 'I') || (eye[1] != 'P')) + return FALSE; + + if((eye[2] != '4') || (eye[3] != 'C')) + return FALSE; + + return TRUE; + +} diff --git a/Raspberry Pi/ip400spi/src/spitask.o b/Raspberry Pi/ip400spi/src/spitask.o new file mode 100644 index 0000000000000000000000000000000000000000..173024bfe362a071f70387c48268a0d154e4daf9 GIT binary patch literal 121400 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 Oaw(tgDCL_Z5B+Zg;Wpm@ literal 0 HcmV?d00001 diff --git a/Raspberry Pi/ip400spi/src/timer.c b/Raspberry Pi/ip400spi/src/timer.c new file mode 100644 index 0000000..ca63b02 --- /dev/null +++ b/Raspberry Pi/ip400spi/src/timer.c @@ -0,0 +1,182 @@ +/*--------------------------------------------------------------------------- + Project: Ip400Spi + + File Name: timer.c + + Author: root + + Creation Date: Mar. 6, 2025 + + Description: Timer functions + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version, provided this copyright notice + is included. + + Copyright (c) 2024-25 Alberta Digital Radio Communications Society + +---------------------------------------------------------------------------*/ +#include +#include +#include +#include +#include + +#include "types.h" +#include "spidefs.h" +#include "logger.h" + +#include "timer.h" + +// local definitions +#define CLOCKID CLOCK_REALTIME +#define SIG_TIMER SIGUSR1 // signal to be used for timer + +// Timer function threads +struct timer_threads_t { + BOOL exit; + void (*exec_func)(void); // function called by timer + pthread_t timer_fn; + pthread_mutex_t timer_mutex; // timer mutex + pthread_cond_t timer_wait_cond; // timer wait condition + pthread_mutex_t timer_exit_mutex; // timer exit mutex + pthread_cond_t timer_exit_wait_cond; // timbeforeer exit wait condition +} timer_threads; + +// function called by timer +static void *timer_threads_fn(void *arg); + +/* + * handle the timer signal + */ +static void timer_signal(int sig, siginfo_t *si, void *uc) +{ + /* Not a timer signal? */ + if (!si || si->si_code != SI_TIMER) { + return; + } + + pthread_mutex_lock(&timer_threads.timer_mutex); + pthread_cond_signal(&timer_threads.timer_wait_cond); + pthread_mutex_unlock(&timer_threads.timer_mutex); +} + +/* + * stop the timer + */ +void stopTimer(void) +{ + pthread_mutex_lock(&timer_threads.timer_exit_mutex); + pthread_cond_signal(&timer_threads.timer_exit_wait_cond); + pthread_mutex_unlock(&timer_threads.timer_exit_mutex); + + timer_threads.exit = TRUE; +} + +/* + * timer process: does not return until signaled to do soTIMER_THREADS; + * call the function every interval in ms + */ +BOOL startTimer(int interval, void (*exec_function)(void)) +{ + struct sigaction sa; + struct sigevent sev; + static sigset_t mask; + long long freq_nanosecs; + struct itimerspec its; + timer_t timerid; + + // init background threads + timer_threads.exit = FALSE; + timer_threads.exec_func = exec_function; + pthread_mutex_init(&timer_threads.timer_mutex, NULL); + pthread_mutex_init(&timer_threads.timer_exit_mutex, NULL); + pthread_cond_init(&timer_threads.timer_wait_cond, NULL); + pthread_cond_init(&timer_threads.timer_exit_wait_cond, NULL); + + // step 1: establish a handle for timer signal + sa.sa_flags = SA_SIGINFO; + sa.sa_sigaction = timer_signal; + sigemptyset(&sa.sa_mask); + if (sigaction(SIG_TIMER, &sa, NULL) == -1) { + logger(LOG_DEBUG,"sigaction Error\n"); + return(FALSE); + } + + // step 2: block it temporarily + sigemptyset(&mask); + sigaddset(&mask, SIG_TIMER); + if (pthread_sigmask(SIG_BLOCK, &mask, NULL) == -1) { + logger(LOG_DEBUG,"sigprocmask Error\n"); + return(FALSE); + } + + // step 3: create the timer + sev.sigev_notify = SIGEV_SIGNAL; + sev.sigev_signo = SIG_TIMER; + sev.sigev_value.sival_ptr = &timerid; + if (timer_create((clockid_t)CLOCKID, &sev, &timerid) == -1) { + logger(LOG_DEBUG,"timer_create Error\n"); + return(FALSE); + } + + // start the background thread + pthread_create(&timer_threads.timer_fn, NULL, timer_threads_fn, (void *)&timer_threads); + + // now start the timer + freq_nanosecs = MSTONS(interval); + its.it_value.tv_sec = freq_nanosecs / 1000000000; + its.it_value.tv_nsec = freq_nanosecs % 1000000000; + its.it_interval.tv_sec = its.it_value.tv_sec; + its.it_interval.tv_nsec = its.it_value.tv_nsec; + if (timer_settime(timerid, 0, &its, NULL) == -1) { + logger(LOG_DEBUG,"timer_settime Error\n"); + return(FALSE); + } + + // unblock the signal + if (pthread_sigmask(SIG_UNBLOCK, &mask, NULL) == -1) { + logger(LOG_DEBUG,"sigprocmask Error\n"); + return(FALSE); + } + + // wait for the signal to stop + pthread_mutex_lock(&timer_threads.timer_exit_mutex); + while(!timer_threads.exit) { + pthread_cond_wait(&timer_threads.timer_exit_wait_cond, &timer_threads.timer_exit_mutex); + } + pthread_mutex_unlock(&timer_threads.timer_exit_mutex); + + // stop the timer + its.it_value.tv_nsec = 0; + its.it_interval.tv_sec = 0; + its.it_interval.tv_nsec = 0; + timer_settime(timerid, 0, &its, NULL); + + // stop the background thread + pthread_join(timer_threads.timer_fn, NULL); + + logger(LOG_DEBUG,"Timer process stopped\n"); + return TRUE; +} + +// this is called at the timer interval... +static void *timer_threads_fn(void *arg) +{ + struct timer_threads_t *s = arg; + + // read the pipe every 20 ms + while (!s->exit) { + + // wait for timer + pthread_mutex_lock(&s->timer_mutex); + pthread_cond_wait(&s->timer_wait_cond, &s->timer_mutex); + pthread_mutex_unlock(&s->timer_mutex); + + // call function + (s->exec_func)(); + } + return NULL; +} diff --git a/Raspberry Pi/ip400spi/src/timer.o b/Raspberry Pi/ip400spi/src/timer.o new file mode 100644 index 0000000000000000000000000000000000000000..225f333fb2c3429a027f42442cb42eaeabfa6cd7 GIT binary patch literal 141448 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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "types.h" +#include "logger.h" +#include "spidefs.h" + +// local defines +#define MAX_BUFFER 1024 // max buffer size +#define SOCKET_ERROR -1 // socket error + +struct udp_threads_t { + int udpsock; // socket + struct sockaddr_in si_remote; // where to send it + // background task + BOOL exit; // exit + pthread_t rxfunc; // rx function + uint8_t buffer[MAX_BUFFER]; // rx bufferrxSegLen + int length; // length received +} udp_threads; + +void *udp_receive_task(void *args); + +/* + * set up the UDP Socket + */ +BOOL setup_udp_socket(char *hostname, int hostport, int localport) +{ + struct sockaddr_in si_me; + struct hostent ah, *host; + + + memset(&ah,0,sizeof(ah)); + host = gethostbyname(hostname); + if (!host) + { + logger(LOG_NOTICE, "Unable to find host %s\n", hostname); + return FALSE; + } + memset((char *) &udp_threads.si_remote, 0, sizeof(struct sockaddr_in)); + udp_threads.si_remote.sin_addr = *(struct in_addr *)host->h_addr; + udp_threads.si_remote.sin_family = AF_INET; + udp_threads.si_remote.sin_port = htons(hostport); + + if ((udp_threads.udpsock=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1) + { + logger(LOG_NOTICE, "Unable to create new socket for fpga udp_BOOL EnqueSPIFrame(void *buffer, uint16_t length)threads_tconnection\n"); + return FALSE; + } + + memset((char *) &si_me, 0, sizeof(si_me)); + si_me.sin_family = AF_INET; + si_me.sin_port = htons(localport); + si_me.sin_addr.s_addr = htonl(INADDR_ANY); + if (!strncmp(inet_ntoa(udp_threads.si_remote.sin_addr),"127.",4)) + si_me.sin_addr.s_addr = inet_addr("127.0.0.1"); + if (bind(udp_threads.udpsock, (const struct sockaddr *)&si_me, sizeof(si_me))==-1) + { + logger(LOG_NOTICE, "Unable to bind to %s:%d for fpga connection\n", + inet_ntoa(si_me.sin_addr), ntohs(si_me.sin_port)); + return FALSE; + } + if (!udp_threads.udpsock) { + logger(LOG_NOTICE, "Unable to create UDP socket forBOOL setup_udp_socket(char *hostname, int hostport, int localport) %s:%d\n", hostname, localport); + return FALSE; + } + + // set the receive timeout on the read to one second + struct timeval timeout; + timeout.tv_sec = (__time_t)1; + timeout.tv_usec =(__suseconds_t)0; + if (setsockopt (udp_threads.udpsock, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(struct timeval)) < 0) { + logger(LOG_NOTICE, "setsockopt timeout failed\n"); + } + + // start the rx background + udp_threads.exit = FALSE; + pthread_create(&udp_threads.rxfunc, NULL, &udp_receive_task, (void *)(&udp_threads)); + return TRUE; +} + +/* + * Close the socket + */ +void close_udp_socket(void) +{ + udp_threads.exit = TRUE; + pthread_join(udp_threads.rxfunc, NULL); + + if(udp_threads.udpsock) + close(udp_threads.udpsock); +} + +/* + * Send a UDP packet + */ +BOOL send_udp_packet(void *data, uint16_t length) +{ + int stat; + stat = sendto(udp_threads.udpsock, data, length, 0, (struct sockaddr *)&udp_threads.si_remote,sizeof(struct sockaddr_in)); + if(stat == -1) { + logger(LOG_NOTICE, "Error on UDP packet: %d:%s\n", errno, geterrno(errno)); + return FALSE; + } + logger(LOG_DEBUG, "UDP Packet Sent\n"); + return TRUE; +} + +/* + * Receive a UDP packet + */ +void *udp_receive_task(void *args) +{ + struct sockaddr_in si_them; + unsigned int themlen = sizeof(struct sockaddr_in); + + struct udp_threads_t *s = (struct udp_threads_t *)args; + SPI_DATA_FRAME *spiFrame; + + while(!s->exit) { + + if ((s->length = recvfrom(s->udpsock,s->buffer,MAX_BUFFER, 0, + (struct sockaddr *)&si_them,&themlen)) == SOCKET_ERROR) + { + /* + * process a non-timeout. + */ + if(errno != EAGAIN) { + logger(LOG_ERROR, "UDP Receive error %d\n", errno); + } + } else { + // check the packet header first + if(!isIP400Frame(s->buffer)) + continue; + + // rx a good packet + if((spiFrame = malloc(s->length)) == NULL) { + continue; + } + spiFrame->buffer = s->buffer; + spiFrame->length = s->length; + EnqueSPIFrame(spiFrame); + } + } + return NULL; +} + diff --git a/Raspberry Pi/ip400spi/src/udp.o b/Raspberry Pi/ip400spi/src/udp.o new file mode 100644 index 0000000000000000000000000000000000000000..3f45c70633bbf6e522797d857d2cd0b1323538c4 GIT binary patch literal 154504 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 literal 0 HcmV?d00001