1 /**
2  * Copyright (C) 2012-2014 Analog Devices, Inc.
3  *
4  * Licensed under the GPL-2.
5  *
6  */
7 
8 #ifndef __DAC_DATA_MANAGER__
9 #define __DAC_DATA_MANAGER__
10 
11 #include <gtk/gtk.h>
12 #include <stdarg.h>
13 #include <iio.h>
14 
15 enum dds_tone_type {
16 	TONE_I,
17 	TONE_Q
18 };
19 
20 enum dds_tone_index {
21 	TONE_1,
22 	TONE_2
23 };
24 
25 enum dds_widget_type {
26 	WIDGET_FREQUENCY,
27 	WIDGET_SCALE,
28 	WIDGET_PHASE
29 };
30 
31 #define DDS_DISABLED  0
32 #define DDS_ONE_TONE  1
33 #define DDS_TWO_TONE  2
34 #define DDS_INDEPDENT 3
35 #define DDS_BUFFER    4
36 
37 struct dac_data_manager;
38 
39 struct dac_data_manager *dac_data_manager_new(struct iio_device *dac1,
40 		struct iio_device *dac2, struct iio_context *ctx);
41 void dac_data_manager_free(struct dac_data_manager *manager);
42 void dac_data_manager_freq_widgets_range_update(struct dac_data_manager *manager,
43 		double tx_sample_rate);
44 void dac_data_manager_update_iio_widgets(struct dac_data_manager *manager);
45 int  dac_data_manager_set_dds_mode(struct dac_data_manager *manager,
46 		const char *dac_name, unsigned tx_index, int mode);
47 int  dac_data_manager_get_dds_mode(struct dac_data_manager *manager,
48 		const char *dac_name, unsigned tx_index);
49 void dac_data_manager_set_buffer_chooser_current_folder(struct dac_data_manager *manager,
50 		const char *path);
51 void dac_data_manager_set_buffer_chooser_filename(struct dac_data_manager *manager,
52 		const char *filename);
53 char *dac_data_manager_get_buffer_chooser_filename(struct dac_data_manager *manager);
54 void dac_data_manager_set_tx_channel_state(struct dac_data_manager *manager,
55 		unsigned ch_index, bool state);
56 bool dac_data_manager_get_tx_channel_state(struct dac_data_manager *manager,
57 		unsigned ch_index);
58 GtkWidget *dac_data_manager_get_widget(struct dac_data_manager *manager,
59 		enum dds_tone_type tone, enum dds_widget_type type);
60 GtkWidget *dac_data_manager_get_gui_container(struct dac_data_manager *manager);
61 void dac_data_manager_set_buffer_size_alignment(struct dac_data_manager *manager,
62 		unsigned align);
63 unsigned dac_data_manager_dds_tone(unsigned tx_index,
64 	enum dds_tone_index tone_index, enum dds_tone_type tone_type);
65 
66 /* Helpers */
67 int device_scan_elements_count(struct iio_device *dev);
68 
69 #endif /* __DAC_DATA_MANAGER__ */
70