Skip to content
This repository was archived by the owner on May 17, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,345 changes: 1,345 additions & 0 deletions ASV-2/POKB/main code/POKB_Main/XBee.h

Large diffs are not rendered by default.

119 changes: 119 additions & 0 deletions ASV-2/POKB/main code/POKB_Main/can.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
/*
can.h
2012 Copyright (c) Seeed Technology Inc. All right reserved.

Author:Loovee
Contributor: Cory J. Fowler
2014-1-16
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-
1301 USA
*/
#ifndef _MCP2515_H_
#define _MCP2515_H_

#include "can_defines.h"

#define MAX_CHAR_IN_MESSAGE 8

class MCP_CAN
{
private:

INT8U m_nExtFlg; /* identifier xxxID */
/* either extended (the 29 LSB) */
/* or standard (the 11 LSB) */
INT32U m_nID; /* can id */
INT8U m_nDlc; /* data length: */
INT8U m_nDta[MAX_CHAR_IN_MESSAGE]; /* data */
INT8U m_nRtr; /* rtr */
INT8U m_nfilhit;
INT8U SPICS;

/*
* mcp2515 driver function
*/
// private:
private:

void mcp2515_reset(void); /* reset mcp2515 */

INT8U mcp2515_readRegister(const INT8U address); /* read mcp2515's register */

void mcp2515_readRegisterS(const INT8U address,
INT8U values[],
const INT8U n);
void mcp2515_setRegister(const INT8U address, /* set mcp2515's register */
const INT8U value);

void mcp2515_setRegisterS(const INT8U address, /* set mcp2515's registers */
const INT8U values[],
const INT8U n);

void mcp2515_initCANBuffers(void);

void mcp2515_modifyRegister(const INT8U address, /* set bit of one register */
const INT8U mask,
const INT8U data);

INT8U mcp2515_readStatus(void); /* read mcp2515's Status */
INT8U mcp2515_setCANCTRL_Mode(const INT8U newmode); /* set mode */
INT8U mcp2515_configRate(const INT8U canSpeed); /* set boadrate */
INT8U mcp2515_init(const INT8U canSpeed); /* mcp2515init */

void mcp2515_write_id( const INT8U mcp_addr, /* write can id */
const INT8U ext,
const INT32U id );

void mcp2515_read_id( const INT8U mcp_addr, /* read can id */
INT8U* ext,
INT32U* id );

void mcp2515_write_canMsg( const INT8U buffer_sidh_addr ); /* write can msg */
void mcp2515_read_canMsg( const INT8U buffer_sidh_addr); /* read can msg */
void mcp2515_start_transmit(const INT8U mcp_addr); /* start transmit */
INT8U mcp2515_getNextFreeTXBuf(INT8U *txbuf_n); /* get Next free txbuf */

/*
* can operator function
*/

INT8U setMsg(INT32U id, INT8U ext, INT8U len, INT8U rtr, INT8U *pData); /* set message */
INT8U setMsg(INT32U id, INT8U ext, INT8U len, INT8U *pData); /* set message */
INT8U readMsg(); /* read message */
INT8U sendMsg(); /* send message */

public:
MCP_CAN(INT8U _CS);
INT8U begin(INT8U speedset); /* init can */
INT8U init_Mask(INT8U num, INT8U ext, INT32U ulData); /* init Masks */
INT8U init_Filt(INT8U num, INT8U ext, INT32U ulData); /* init filters */
INT8U sendMsgBuf(INT32U id, INT8U ext, INT8U rtr, INT8U len, INT8U *buf); /* send buf */
INT8U sendMsgBuf(INT32U id, INT8U ext, INT8U len, INT8U *buf); /* send buf */
INT8U readMsgBuf(INT8U *len, INT8U *buf); /* read buf */
INT8U readMsgBufID(INT32U *ID, INT8U *len, INT8U *buf); /* read buf with object ID */
INT8U checkTXStatus(INT8U buf);
INT8U clearMsg(); /* clear all message to zero */
INT8U checkReceive(void); /* if something received */
INT8U checkError(void); /* if something error */
INT32U getCanId(void); /* get can id when receive */
INT8U isRemoteRequest(void); /* get RR flag when receive */
INT8U setupCANFrame(INT8U *buf, INT8U pos, INT8U size, INT32U val);
INT32U parseCANFrame(INT8U *buf, INT8U pos, INT8U size);
};

#endif
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
64 changes: 64 additions & 0 deletions ASV-2/POKB/main code/POKB_Main/can_asv_defines.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
//###################################################
//###################################################

//___. ___.
//\_ |__\_ |__ _____ _________ __
// | __ \| __ \\__ \ / ___/\ \/ /
// | \_\ \ \_\ \/ __ \_\___ \ \ /
// |___ /___ (____ /____ > \_/
// \/ \/ \/ \/

// Written by Ng Ren Zhi

// Change Log for v1.0:
// - Initial commit

//###################################################
//###################################################

#ifndef _DEFINE_H_
#define _DEFINE_H_

#define CAN_thruster 101
#define CAN_manual_thruster 102
#define CAN_control_link 103
#define CAN_heartbeat 104
#define CAN_soft_e_stop 105
#define CAN_e_stop 106
#define CAN_LARS 107
#define CAN_POPB_control 108
#define CAN_Shooter 109
#define CAN_LARS_stats 110
#define CAN_battery1_stats 111
#define CAN_battery2_stats 112
#define CAN_esc1_motor_stats 113
#define CAN_esc2_motor_stats 114
#define CAN_remote_kill_stats 115
#define CAN_INS_stats 116
#define CAN_GPS_stats 117
#define CAN_cpu_temp 118
#define CAN_POSB_stats 119
#define CAN_POPB_stats 120
#define CAN_POSB_BUS_stats 121
#define CAN_POKB_BUS_stats 122
#define CAN_POPB_BUS_stats 123
#define CAN_Tele_BUS_stats 124
#define CAN_LARS_BUS_stats 125
#define CAN_MANI_stats 126

//CAN Heartbeat
#define HEARTBEAT_POSB 1
#define HEARTBEAT_POPB 2
#define HEARTBEAT_POKB 3
#define HEARTBEAT_Tele 4
#define HEARTBEAT_LARS 5
#define HEARTBEAT_Cogswell 6
#define HEARTBEAT_OCS 7
#define HEARTBEAT_RC 8
//Bit position
#define HEARTBEAT_BATT1 0
#define HEARTBEAT_BATT2 1
#define HEARTBEAT_ESC1 2
#define HEARTBEAT_ESC2 3

#endif
Loading