mirror of
https://github.com/esp8266/Arduino.git
synced 2025-07-30 16:24:09 +03:00
Initial Arduino IDE based on Processing.
This commit is contained in:
129
build/shared/lib/avrlib/rsl/erp.c
Executable file
129
build/shared/lib/avrlib/rsl/erp.c
Executable file
@ -0,0 +1,129 @@
|
||||
/*! \file erp.c \brief Emerald Radio Protocol System. */
|
||||
//*****************************************************************************
|
||||
//
|
||||
// File Name : 'erp.c'
|
||||
// Title : Emerald Radio Protocol System
|
||||
// Author : Pascal Stang - Copyright (C) 2003
|
||||
// Created : 2003.09.10
|
||||
// Revised : 2003.09.10
|
||||
// Version : 0.1
|
||||
// Target MCU : Atmel AVR series
|
||||
// Editor Tabs : 4
|
||||
//
|
||||
// This code is distributed under the GNU Public License
|
||||
// which can be found at http://www.gnu.org/licenses/gpl.txt
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
//----- Include Files ---------------------------------------------------------
|
||||
#include "global.h" // include our global settings
|
||||
#include "debug.h" // include debug function library
|
||||
#include "rprintf.h" // include printf function library
|
||||
|
||||
#include "erp.h"
|
||||
#include "edpdebug.h"
|
||||
|
||||
// globals
|
||||
|
||||
// functions
|
||||
void erpDisplayHeader(ErpPacket* erpPacket)
|
||||
{
|
||||
// show ERP packet header
|
||||
rprintf("ERP Header: Callsign=");
|
||||
rprintfStrLen(erpPacket->CallSign,0,CALLSIGN_FIELD_LEN);
|
||||
rprintf(", Trg=0x%x, Src=0x%x, Seq#=%d, Type=",
|
||||
erpPacket->ToAddress,
|
||||
erpPacket->FromAddress,
|
||||
erpPacket->SequenceNum);
|
||||
// try to decode packet type
|
||||
switch(erpPacket->Type)
|
||||
{
|
||||
case ERP_ECHO: rprintf("ECHO"); break;
|
||||
case ERP_ECHOREPLY: rprintf("ECHOREPLY"); break;
|
||||
case ERP_TEST: rprintf("TEST"); break;
|
||||
case ERP_EDPCOMMAND: rprintf("EDPCOMMAND"); break;
|
||||
case ERP_EDPREPLY: rprintf("EDPREPLY"); break;
|
||||
case ERP_EDPREPLYNODEV: rprintf("EDPREPLYNODEV"); break;
|
||||
default: rprintf("0x%x", erpPacket->Type); break;
|
||||
}
|
||||
rprintfCRLF();
|
||||
}
|
||||
|
||||
void erpDisplayPacket(ErpPacket* erpPacket, u08 pktLength)
|
||||
{
|
||||
u08 i;
|
||||
u08 flag;
|
||||
|
||||
// show ERP packet header
|
||||
erpDisplayHeader(erpPacket);
|
||||
|
||||
// dump complete raw packet data
|
||||
if(pktLength)
|
||||
{
|
||||
// check if all characters are printable
|
||||
flag = TRUE;
|
||||
for(i=0; i<pktLength; i++)
|
||||
{
|
||||
if( ((u08*)erpPacket)[i] < 0x20 ) flag = FALSE;
|
||||
}
|
||||
|
||||
// print packet data
|
||||
rprintf("Data:\r\n");
|
||||
if(flag)
|
||||
{
|
||||
// print as string
|
||||
rprintfStrLen(((u08*)erpPacket), 0, pktLength);
|
||||
}
|
||||
else
|
||||
{
|
||||
// print as hex
|
||||
debugPrintHexTable(pktLength, ((u08*)erpPacket));
|
||||
}
|
||||
rprintfCRLF();
|
||||
}
|
||||
}
|
||||
|
||||
void erpDisplayEdpCommand(u08 length, ErpEdpCommand* erpEdpCommand)
|
||||
{
|
||||
// print ERP-specific fields
|
||||
rprintf("EDP DestAddr: 0x%x\r\n", erpEdpCommand->EdpDestAddr);
|
||||
// print embedded EDP command
|
||||
edpDisplayCommand(length-1, &erpEdpCommand->EdpCommand);
|
||||
}
|
||||
|
||||
void erpDisplayEdpReply(u08 length, ErpEdpReply* erpEdpReply)
|
||||
{
|
||||
// print embedded EDP reply
|
||||
edpDisplayReply(erpEdpReply->EdpResponse, &erpEdpReply->EdpReply);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
void ErpPacketCreate(u08 targetI2cAddr, u08 pktType, u08 datalength, u08* data)
|
||||
{
|
||||
// make packet structure in TxPacket memory
|
||||
struct ErpPacket* erpPacket
|
||||
= (struct ErpPacket*)TxPacket;
|
||||
|
||||
// prepare Emerald packet header
|
||||
memcpy(erpPacket->CallSign, MYCALLSIGN, CALLSIGN_FIELD_LEN);
|
||||
erpPacket->ToAddress = targetI2cAddr;
|
||||
erpPacket->FromAddress = LocalI2cAddr;
|
||||
erpPacket->SequenceNum = SequenceNum++;
|
||||
erpPacket->Type = pktType;
|
||||
// copy data
|
||||
for(i=0; i<datalength; i++)
|
||||
{
|
||||
erpPacket->Data[i] = *data++;
|
||||
}
|
||||
}
|
||||
|
||||
void ErpPacketTx(void)
|
||||
{
|
||||
// STX/ETX header
|
||||
u08 stxetxStatus = 0x5A;
|
||||
u08 stxetxType = 0xA5;
|
||||
rprintf("Sending Packet: Status: 0x%x Type: 0x%x\r\n", stxetxStatus, stxetxType);
|
||||
radioSend(stxetxStatus, stxetxType, EMRADIOHEADER_LEN+(len/2), packet);
|
||||
}
|
||||
*/
|
Reference in New Issue
Block a user