optical/NxFuncs/controlbus/sewhdcontrol.h

170 lines
4.6 KiB
C
Raw Normal View History

2025-09-04 01:45:08 +00:00
//-------------------------------------------------------------------------------
// File Name: headcontrol.h
// Brief:
// Version: 1.0.0
// Create Date: 2018/05/02
// Create by: Marshal Lee
// Copyright:
// Copyright (c) 2017, GetonAgain Co., LTD.
// All rights reserved.
//
// Modify by: Marshal Lee
// Modify Date: 2018/05/02
//-------------------------------------------------------------------------------
#ifndef __SEWHDCONTROL_H__
#define __SEWHDCONTROL_H__
#include "controlbus.h"
#if (CONTROL_BUS == COMM_CAN)
/*
<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ư<EFBFBD>
*/
//-------------------------------------------------------------------------------
typedef struct
{
u8 nodeTye; // <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
u8 nodeId; // <20>ڵ<EFBFBD>ID
CtrlBusPacket ctrlCmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CtrlBusPacket exbSta; // <20><>Χ<EFBFBD><EFBFBD>ص<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
CtrlBusPacket busSta; // <20><>Χ<EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
CtrlBusPacket traCmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BoardRegVal regVal; // <20><>Χ<EFBFBD><CEA7><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ֵ
CtrlBusPacket rdReg; // <20><>ȡ<EFBFBD><C8A1>Χ<EFBFBD><CEA7><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ֵ
u8 cmdFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ N5--<2D><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 staFlag; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>־ N5--<2D><><EFBFBD><EFBFBD>BN_CMD_EXSTA
u8 refSta; // ˢ<><CBA2>״̬<D7B4><CCAC>־ N5--<2D><><EFBFBD><EFBFBD>BN_CMD_EXSTA
u8 traFlag; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ N5--<2D><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 busFlag; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>־ N5--<2D><><EFBFBD><EFBFBD>BN_CMD_BUSSTA
u8 refVer;
u8 verFlag;
u8 transFlag; // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>־ <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 exbupdateFlag; // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
u8 refNvPara; // ˢ<>·<EFBFBD><C2B7><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>
u8 nvParaFlag; // <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD>־
u8 refHeadPara; // ˢ<>»<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>
u8 headParaFlag; // <20><><EFBFBD>ջ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
}SewHeadControl;
//-------------------------------------------------------------------------------
typedef union
{
u8 buff[CAN_DATA_LEN];
struct
{
u16 cmd;
u8 subcmd;
u8 para[5];
} __attribute__ ((packed)) headCtrl; // <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct
{
u16 cmd;
u16 pataId;
s32 paraVal; // <20><><EFBFBD><EFBFBD>
} __attribute__ ((packed)) headPara; // <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct
{
u16 cmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
u8 parablockID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
u8 paraID; // <20><><EFBFBD><EFBFBD>ID
s32 paraval; // <20><><EFBFBD><EFBFBD>ֵ
} __attribute__ ((packed)) headNvPara; // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>
struct
{
u32 staBits; // ״̬λ
u8 setedNP; // <20><><EFBFBD>õĵ<C3B5>ǰ<EFBFBD><C7B0>λ
u16 potValue; // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ֵ(ë<><C3AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
s8 curHoistLevel; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>λ
} __attribute__ ((packed)) headSta; // ״̬<D7B4><CCAC><EFBFBD><EFBFBD>
struct
{
u32 staBits; // ״̬λ
u8 setedNP; // <20><><EFBFBD>õĵ<C3B5>ǰ<EFBFBD><C7B0>λ
s16 footmotopos; // ѹ<>ŵ<EFBFBD><C5B5><EFBFBD>λ<EFBFBD><CEBB>
u8 rev;
} __attribute__ ((packed)) footHeadSta; // ״̬<D7B4><CCAC><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9>)
}SewHeadCommand;
//-------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6A8>
#define CTRL_CMD_SEW_HEAD_CTRL 0x1000 // <20><><EFBFBD>һ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_SEW_HEAD_PARA 0x1001 // <20><><EFBFBD>һ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_CMD_SEW_HEAD_NVPARA 0x1002 // <20><><EFBFBD>һ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------
// <20>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6A8>
#define CTRL_SUBCMD_SEW_WORK_STA 0x00 // <20><><EFBFBD><EFBFBD>״̬ˢ<CCAC><CBA2>
#define CTRL_SUBCMD_SEW_ENABLE 0x01 // <20><>ͷ<EFBFBD><CDB7><EFBFBD>ƹ<EFBFBD><C6B9>ܴ<EFBFBD><DCB4><EFBFBD>
#define CTRL_SUBCMD_SEW_DISABLE 0x02 // <20><>ͷ<EFBFBD><CDB7><EFBFBD>ƹ<EFBFBD><C6B9>ܹر<DCB9>
#define CTRL_SUBCMD_SEW_OUTPUT_CTRL 0x03 // IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_SEW_ELCLIP_CTRL 0x04 // <20><><EFBFBD>Ӽ<EFBFBD><D3BC>߿<EFBFBD><DFBF><EFBFBD>
#define CTRL_SUBCMD_SEW_IN_WORK 0x05 // <20><><EFBFBD><EFBFBD><EBB9A4>״̬
#define CTRL_SUBCMD_SEW_PFOOT_CTRL 0x10 // ѹ<>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//-------------------------------------------------------------------------------
#define CTRL_PFOOT_CMD_TO_ZERO 0x00 // ѹ<>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_PFOOT_CMD_DIS 0x01 // ѹ<>ŵ<EFBFBD><C5B5><EFBFBD>ʧ<EFBFBD><CAA7>
#define CTRL_PFOOT_CMD_EN 0x02 // ѹ<>ŵ<EFBFBD><C5B5><EFBFBD>ʹ<EFBFBD><CAB9>
#define CTRL_PFOOT_CMD_RESET 0x03 // ѹ<>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_PFOOT_CMD_UP 0x04 // ѹ<>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_PFOOT_CMD_DOWN 0x05 // ѹ<>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD>½<EFBFBD>
#define CTRL_PFOOT_CMD_BACK 0x06 // ѹ<>ŵ<EFBFBD><C5B5><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>λ
//-------------------------------------------------------------------------------
#define CTRL_SUBCMD_SEW_PFOOT_FOLLOW_CTRL 0x11 // ѹ<>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CTRL_SUBCMD_SEW_PFOOT_SET_POS 0x12 // <20>趨ѹ<E8B6A8>Ź<EFBFBD><C5B9><EFBFBD><EFBFBD><EFBFBD>λ
#define CTRL_SUBCMD_SEW_PFOOT_SET_ECD 0x13 // У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
// ״̬λ<CCAC><CEBB><EFBFBD><EFBFBD>
#define HDSTA_SEW_HEAD_LOCK 0x00000001 // <20><>ͷ״̬<D7B4><CCAC>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD>۰<EFBFBD>ť<EFBFBD><C5A5>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7>
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
void InitSewHeadControl(SewHeadControl * pCtrl);
void SendSewHeadCommand(SewHeadControl * pCtrl, SewHeadCommand * pCmd);
void RequestSewHeadStatus(SewHeadControl * pCtrl);
void RequestSewHeadVersion(SewHeadControl * pCtrl);
void RequestSewHeadNvPara(SewHeadControl * pCtrl);
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
#endif
#endif