| 
									
										
										
										
											2011-07-01 19:31:33 -03:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (C) 2011 Instituto Nokia de Tecnologia | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Authors: | 
					
						
							|  |  |  |  *    Lauro Ramos Venancio <lauro.venancio@openbossa.org> | 
					
						
							|  |  |  |  *    Aloisio Almeida Jr <aloisio.almeida@openbossa.org> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program 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 this program; if not, write to the | 
					
						
							|  |  |  |  * Free Software Foundation, Inc., | 
					
						
							|  |  |  |  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef __LOCAL_NFC_H
 | 
					
						
							|  |  |  | #define __LOCAL_NFC_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-18 11:19:34 +03:00
										 |  |  | #include <net/nfc/nfc.h>
 | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:35 -03:00
										 |  |  | #include <net/sock.h>
 | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:33 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:35 -03:00
										 |  |  | struct nfc_protocol { | 
					
						
							|  |  |  | 	int id; | 
					
						
							|  |  |  | 	struct proto *proto; | 
					
						
							|  |  |  | 	struct module *owner; | 
					
						
							|  |  |  | 	int (*create)(struct net *net, struct socket *sock, | 
					
						
							| 
									
										
										
										
											2012-03-05 01:03:53 +01:00
										 |  |  | 		      const struct nfc_protocol *nfc_proto); | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:35 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:36 -03:00
										 |  |  | struct nfc_rawsock { | 
					
						
							|  |  |  | 	struct sock sk; | 
					
						
							|  |  |  | 	struct nfc_dev *dev; | 
					
						
							|  |  |  | 	u32 target_idx; | 
					
						
							|  |  |  | 	struct work_struct tx_work; | 
					
						
							|  |  |  | 	bool tx_work_scheduled; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | #define nfc_rawsock(sk) ((struct nfc_rawsock *) sk)
 | 
					
						
							|  |  |  | #define to_rawsock_sk(_tx_work) \
 | 
					
						
							|  |  |  | 	((struct sock *) container_of(_tx_work, struct nfc_rawsock, tx_work)) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-15 10:43:06 +01:00
										 |  |  | struct nfc_llcp_sdp_tlv; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-14 16:43:12 +01:00
										 |  |  | void nfc_llcp_mac_is_down(struct nfc_dev *dev); | 
					
						
							|  |  |  | void nfc_llcp_mac_is_up(struct nfc_dev *dev, u32 target_idx, | 
					
						
							|  |  |  | 			u8 comm_mode, u8 rf_mode); | 
					
						
							|  |  |  | int nfc_llcp_register_device(struct nfc_dev *dev); | 
					
						
							|  |  |  | void nfc_llcp_unregister_device(struct nfc_dev *dev); | 
					
						
							|  |  |  | int nfc_llcp_set_remote_gb(struct nfc_dev *dev, u8 *gb, u8 gb_len); | 
					
						
							| 
									
										
										
										
											2012-03-05 01:03:50 +01:00
										 |  |  | u8 *nfc_llcp_general_bytes(struct nfc_dev *dev, size_t *general_bytes_len); | 
					
						
							| 
									
										
										
										
											2012-05-31 00:05:50 +02:00
										 |  |  | int nfc_llcp_data_received(struct nfc_dev *dev, struct sk_buff *skb); | 
					
						
							| 
									
										
										
										
											2012-10-17 14:43:39 +02:00
										 |  |  | struct nfc_llcp_local *nfc_llcp_find_local(struct nfc_dev *dev); | 
					
						
							| 
									
										
										
										
											2011-12-14 16:43:12 +01:00
										 |  |  | int __init nfc_llcp_init(void); | 
					
						
							|  |  |  | void nfc_llcp_exit(void); | 
					
						
							| 
									
										
										
										
											2013-02-15 10:43:06 +01:00
										 |  |  | void nfc_llcp_free_sdp_tlv(struct nfc_llcp_sdp_tlv *sdp); | 
					
						
							|  |  |  | void nfc_llcp_free_sdp_tlv_list(struct hlist_head *head); | 
					
						
							| 
									
										
										
										
											2011-12-14 16:43:12 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:36 -03:00
										 |  |  | int __init rawsock_init(void); | 
					
						
							|  |  |  | void rawsock_exit(void); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:35 -03:00
										 |  |  | int __init af_nfc_init(void); | 
					
						
							|  |  |  | void af_nfc_exit(void); | 
					
						
							|  |  |  | int nfc_proto_register(const struct nfc_protocol *nfc_proto); | 
					
						
							|  |  |  | void nfc_proto_unregister(const struct nfc_protocol *nfc_proto); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:33 -03:00
										 |  |  | extern int nfc_devlist_generation; | 
					
						
							|  |  |  | extern struct mutex nfc_devlist_mutex; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:34 -03:00
										 |  |  | int __init nfc_genl_init(void); | 
					
						
							|  |  |  | void nfc_genl_exit(void); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void nfc_genl_data_init(struct nfc_genl_data *genl_data); | 
					
						
							|  |  |  | void nfc_genl_data_exit(struct nfc_genl_data *genl_data); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int nfc_genl_targets_found(struct nfc_dev *dev); | 
					
						
							| 
									
										
										
										
											2012-04-10 19:43:04 +02:00
										 |  |  | int nfc_genl_target_lost(struct nfc_dev *dev, u32 target_idx); | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:34 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | int nfc_genl_device_added(struct nfc_dev *dev); | 
					
						
							|  |  |  | int nfc_genl_device_removed(struct nfc_dev *dev); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-12-14 16:43:09 +01:00
										 |  |  | int nfc_genl_dep_link_up_event(struct nfc_dev *dev, u32 target_idx, | 
					
						
							|  |  |  | 			       u8 comm_mode, u8 rf_mode); | 
					
						
							|  |  |  | int nfc_genl_dep_link_down_event(struct nfc_dev *dev); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-01 13:21:13 +02:00
										 |  |  | int nfc_genl_tm_activated(struct nfc_dev *dev, u32 protocol); | 
					
						
							|  |  |  | int nfc_genl_tm_deactivated(struct nfc_dev *dev); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-15 10:43:06 +01:00
										 |  |  | int nfc_genl_llc_send_sdres(struct nfc_dev *dev, struct hlist_head *sdres_list); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-15 05:58:06 +00:00
										 |  |  | struct nfc_dev *nfc_get_device(unsigned int idx); | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:33 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | static inline void nfc_put_device(struct nfc_dev *dev) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	put_device(&dev->dev); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline void nfc_device_iter_init(struct class_dev_iter *iter) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	class_dev_iter_init(iter, &nfc_class, NULL, NULL); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline struct nfc_dev *nfc_device_iter_next(struct class_dev_iter *iter) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	struct device *d = class_dev_iter_next(iter); | 
					
						
							|  |  |  | 	if (!d) | 
					
						
							|  |  |  | 		return NULL; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return to_nfc_dev(d); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline void nfc_device_iter_exit(struct class_dev_iter *iter) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	class_dev_iter_exit(iter); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-18 11:19:33 +03:00
										 |  |  | int nfc_dev_up(struct nfc_dev *dev); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int nfc_dev_down(struct nfc_dev *dev); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-15 15:57:06 +02:00
										 |  |  | int nfc_start_poll(struct nfc_dev *dev, u32 im_protocols, u32 tm_protocols); | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:33 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | int nfc_stop_poll(struct nfc_dev *dev); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-05 01:03:50 +01:00
										 |  |  | int nfc_dep_link_up(struct nfc_dev *dev, int target_idx, u8 comm_mode); | 
					
						
							| 
									
										
										
										
											2011-12-14 16:43:09 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | int nfc_dep_link_down(struct nfc_dev *dev); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:33 -03:00
										 |  |  | int nfc_activate_target(struct nfc_dev *dev, u32 target_idx, u32 protocol); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int nfc_deactivate_target(struct nfc_dev *dev, u32 target_idx); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-03-05 01:03:53 +01:00
										 |  |  | int nfc_data_exchange(struct nfc_dev *dev, u32 target_idx, struct sk_buff *skb, | 
					
						
							|  |  |  | 		      data_exchange_cb_t cb, void *cb_context); | 
					
						
							| 
									
										
										
										
											2011-07-01 19:31:33 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | #endif /* __LOCAL_NFC_H */
 |