statemachine.h

来自「NOKIA手机开发包」· C头文件 代码 · 共 94 行

H
94
字号
/*  $Id: statemachine.h,v 1.18 2003/04/28 12:43:39 pkot Exp $  G N O K I I  A Linux/Unix toolset and driver for Nokia mobile phones.  This file is part of gnokii.  Gnokii 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.  Gnokii 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 General Public License for more details.  You should have received a copy of the GNU General Public License  along with gnokii; if not, write to the Free Software  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  Copyright (C) 1999, 2000 Hugh Blemings & Pavel Jan韐 ml.  Header file for the statemachine.*/#ifndef _gnokii_statemachine_h#define _gnokii_statemachine_h#include <gnokii/error.h>#include <gnokii/data.h>/* Small structure used in gn_driver *//* Messagetype is passed to the function in case it is a 'generic' one */typedef struct {	unsigned char message_type;	gn_error (*functions)(int messagetype, unsigned char *buffer, int length,			      gn_data *data, struct gn_statemachine *state);} gn_incoming_function_type;/* This structure contains the 'callups' needed by the statemachine *//* to deal with messages from the phone and other information */typedef struct {	/* These make up a list of functions, one for each message type and NULL terminated */	gn_incoming_function_type *incoming_functions;	gn_error (*default_function)(int messagetype, unsigned char *buffer, int length, struct gn_statemachine *state);	gn_phone phone;	gn_error (*functions)(gn_operation op, gn_data *data, struct gn_statemachine *state);	void *driver_instance;} gn_driver;/* How many message types we can wait for at one moment */#define GN_SM_WAITINGFOR_MAX_NUMBER 3/* The states the statemachine can take */typedef enum {	GN_SM_Startup,            /* Not yet initialised */	GN_SM_Initialised,        /* Ready! */	GN_SM_MessageSent,        /* A command has been sent to the link(phone) */	GN_SM_WaitingForResponse, /* We are waiting for a response from the link(phone) */	GN_SM_ResponseReceived    /* A response has been received - waiting for the phone layer to collect it */} gn_state;/* All properties of the state machine */struct gn_statemachine {	gn_state current_state;	gn_config config;	gn_device device;	gn_link link;	gn_driver driver;		/* Store last message for resend purposes */	unsigned char last_msg_type;	unsigned int last_msg_size;	void *last_msg;	/* The responses we are waiting for */	unsigned char waiting_for_number;	unsigned char received_number;	unsigned char waiting_for[GN_SM_WAITINGFOR_MAX_NUMBER];	gn_error response_error[GN_SM_WAITINGFOR_MAX_NUMBER];	/* Data structure to be filled in with the response */	gn_data *data[GN_SM_WAITINGFOR_MAX_NUMBER];};API gn_state gn_sm_loop(int timeout, struct gn_statemachine *state);API gn_error gn_sm_functions(gn_operation op, gn_data *data, struct gn_statemachine *sm);#endif	/* _gnokii_statemachine_h */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?