Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Several function enums missing from NI-FGEN metadata #538

Closed
marcoskirsch opened this issue Oct 30, 2017 · 5 comments · Fixed by #586
Closed

Several function enums missing from NI-FGEN metadata #538

marcoskirsch opened this issue Oct 30, 2017 · 5 comments · Fixed by #586
Assignees

Comments

@marcoskirsch
Copy link
Member

marcoskirsch commented Oct 30, 2017

There are functions in NI-FGEN that have parameters of type "enum". I have modified function_addon.py to point to those enums, but they do not actually exist in src/nifgen/metadata/enums.py.

  • ByteOrder used by CreateWaveformFromFileF64 and CreateWaveformFromFileI16
  • Signal used by ExportSignal
  • RelativeTo used by SetNamedWaveformNextWritePosition and SetWaveformNextWritePosition
  • HardwareState used by GetHardwareState
  • Trigger used by SendSoftwareEdgeTrigger

(final names for the enums may be different)

marcoskirsch added a commit that referenced this issue Oct 30, 2017
The following functions now have enum information:

* create_waveform_from_file_f64
* create_waveform_from_file_i16
* set_named_waveform_next_write_position
* set_waveform_next_write_position
* create_freq_list
* get_hardware_state
* export_signal
* send_software_edge_trigger

Note that the generated code references inexistent enums (issue #538)
@marcoskirsch
Copy link
Member Author

@texasaggie97 is looking into changing the internal process used to extract the initial API metadata. This would include enum information and fix this issue.

marcoskirsch added a commit that referenced this issue Oct 31, 2017
* Notes from meeting

* nifgen: fix init function, add back useful *ExtCal* functions to codegen

* Update generated

* Don't codegen any CheckAttribute* functions

* Update generated

* Stop generating "configure" functions that simply wrap attributes

* niFgen_ConfigureAmplitude
* niFgen_ConfigureChannels
* niFgen_ConfigureClockMode
* niFgen_ConfigureFreqList
* niFgen_ConfigureFrequency
* niFgen_ConfigureGain
* niFgen_ConfigureOperationMode
* niFgen_ConfigureOutputEnabled
* niFgen_ConfigureOutputImpedance
* niFgen_ConfigureOutputMode
* niFgen_ConfigureP2PEndpointFullnessStartTrigger
* niFgen_ConfigureRefClockFrequency
* niFgen_ConfigureRefClockSource
* niFgen_ConfigureReferenceClock
* niFgen_ConfigureSampleClockSource
* niFgen_ConfigureSampleRate
* niFgen_ConfigureSoftwareEdgeScriptTrigger
* niFgen_ConfigureSoftwareEdgeStartTrigger
* niFgen_ConfigureSynchronization
* niFgen_ConfigureTriggerMode
* niFgen_ConfigureTriggerSource
* niFgen_ConfigureUpdateClockSource

* Update generated

* Stop generating enable/disable and p2p functions

* niFgen_DisableAnalogFilter
* niFgen_DisableDigitalFilter
* niFgen_DisableDigitalPatterning
* niFgen_DisableScriptTrigger
* niFgen_DisableStartTrigger
* niFgen_EnableAnalogFilter
* niFgen_EnableDigitalFilter
* niFgen_EnableDigitalPatterning
* niFgen_ManualEnableP2PStream
* niFgen_WriteP2PEndpointI16

* Update generated

* Remove HWS function

* Update generated

* Don't gen ResetAttribute, see #531

* Update generated files

* Stop generating other undesirable functions (for Python)

Obsolete or external calibration:

* niFgen_CreateArbWaveform
* niFgen_CreateBinary16ArbWaveform
* niFgen_ErrorHandler
* niFgen_InitializeAnalogOutputCalibration
* niFgen_InitializeCalADCCalibration
* niFgen_InitializeFlatnessCalibration
* niFgen_InitializeOscillatorFrequencyCalibration
* niFgen_ReadCalADC
* niFgen_RouteSignalOut
* niFgen_WriteBinary16AnalogStaticValue

* Update generated

* Buffer info for some functions

configure_custom_fir_filter_coefficients
create_waveform_f64
create_waveform_i16

* Update generated

* Buffer info for define_user_standard_waveform & get_fir_filter_coefficients

* Add assert for conflicting metadata (sanity check)

* Update generated

* Add buffer info for all write waveform functions

    write_binary16_waveform size
    write_named_waveform_f64 size
    write_named_waveform_i16 size
    write_waveform size

* Update generated

* Updated notes

* Buffer info for CreateFreqList and CreateAdvancedArbSequence

* Update generated

* Added enum information to nifgen functions

The following functions now have enum information:

* create_waveform_from_file_f64
* create_waveform_from_file_i16
* set_named_waveform_next_write_position
* set_waveform_next_write_position
* create_freq_list
* get_hardware_state
* export_signal
* send_software_edge_trigger

Note that the generated code references inexistent enums (issue #538)

* Update generated

* Remove unnecessary is_buffer info from metadata, it was a workaround for metadata bugs.

* Default for _initialize_with_channels

* Remove whitespace

* Defaults for ConfigureFreqList and ConfigureStandardWaveform

* Defaults for ConfigureDigitalEdgeScriptTrigger, ConfigureDigitalEdgeStartTrigger

* Update generated

* Default parameter values for CreateAdvancedArbSequence

* Default parameter value for WaitUntilDone

* Delete notes file as it is no longer needed.

Everything was implemented or issues were open for it.

* Update generated

* Remove obsolete SendSoftwareTrigger

* Update generated

* Retrofit unit tests
@injaleea
Copy link
Contributor

injaleea commented Nov 3, 2017

Need to enable test_get_hardware_state when this fixed

marcoskirsch pushed a commit that referenced this issue Nov 8, 2017
* Notes from meeting

* nifgen: fix init function, add back useful *ExtCal* functions to codegen

* Update generated

* Don't codegen any CheckAttribute* functions

* Update generated

* Stop generating "configure" functions that simply wrap attributes

* niFgen_ConfigureAmplitude
* niFgen_ConfigureChannels
* niFgen_ConfigureClockMode
* niFgen_ConfigureFreqList
* niFgen_ConfigureFrequency
* niFgen_ConfigureGain
* niFgen_ConfigureOperationMode
* niFgen_ConfigureOutputEnabled
* niFgen_ConfigureOutputImpedance
* niFgen_ConfigureOutputMode
* niFgen_ConfigureP2PEndpointFullnessStartTrigger
* niFgen_ConfigureRefClockFrequency
* niFgen_ConfigureRefClockSource
* niFgen_ConfigureReferenceClock
* niFgen_ConfigureSampleClockSource
* niFgen_ConfigureSampleRate
* niFgen_ConfigureSoftwareEdgeScriptTrigger
* niFgen_ConfigureSoftwareEdgeStartTrigger
* niFgen_ConfigureSynchronization
* niFgen_ConfigureTriggerMode
* niFgen_ConfigureTriggerSource
* niFgen_ConfigureUpdateClockSource

* Update generated

* Stop generating enable/disable and p2p functions

* niFgen_DisableAnalogFilter
* niFgen_DisableDigitalFilter
* niFgen_DisableDigitalPatterning
* niFgen_DisableScriptTrigger
* niFgen_DisableStartTrigger
* niFgen_EnableAnalogFilter
* niFgen_EnableDigitalFilter
* niFgen_EnableDigitalPatterning
* niFgen_ManualEnableP2PStream
* niFgen_WriteP2PEndpointI16

* Update generated

* Remove HWS function

* Update generated

* Don't gen ResetAttribute, see #531

* Update generated files

* Stop generating other undesirable functions (for Python)

Obsolete or external calibration:

* niFgen_CreateArbWaveform
* niFgen_CreateBinary16ArbWaveform
* niFgen_ErrorHandler
* niFgen_InitializeAnalogOutputCalibration
* niFgen_InitializeCalADCCalibration
* niFgen_InitializeFlatnessCalibration
* niFgen_InitializeOscillatorFrequencyCalibration
* niFgen_ReadCalADC
* niFgen_RouteSignalOut
* niFgen_WriteBinary16AnalogStaticValue

* Update generated

* Buffer info for some functions

configure_custom_fir_filter_coefficients
create_waveform_f64
create_waveform_i16

* Update generated

* Buffer info for define_user_standard_waveform & get_fir_filter_coefficients

* Add assert for conflicting metadata (sanity check)

* Update generated

* Add buffer info for all write waveform functions

    write_binary16_waveform size
    write_named_waveform_f64 size
    write_named_waveform_i16 size
    write_waveform size

* Update generated

* Updated notes

* Buffer info for CreateFreqList and CreateAdvancedArbSequence

* Update generated

* Added enum information to nifgen functions

The following functions now have enum information:

* create_waveform_from_file_f64
* create_waveform_from_file_i16
* set_named_waveform_next_write_position
* set_waveform_next_write_position
* create_freq_list
* get_hardware_state
* export_signal
* send_software_edge_trigger

Note that the generated code references inexistent enums (issue #538)

* Update generated

* Remove unnecessary is_buffer info from metadata, it was a workaround for metadata bugs.

* Default for _initialize_with_channels

* Remove whitespace

* Defaults for ConfigureFreqList and ConfigureStandardWaveform

* Defaults for ConfigureDigitalEdgeScriptTrigger, ConfigureDigitalEdgeStartTrigger

* Update generated

* Adding more system tests for nifgen

* Updated function_addon.py to have enums type for functions used in system tests

* removed IDQuery field from fgen system tests initialization

* removed simple configure methods from system tests to attributes

* fixing flake-8 error

* fixed review comments

* fixed spacing issue in functions_addon
@Fladolcetta Fladolcetta assigned bhaswath and unassigned marcoskirsch Nov 17, 2017
@bhaswath
Copy link
Contributor

When adding Triggers enum to the enums_addon.py; making and installing nifgen and running its system tests, I get the following error :

_______ ERROR collecting src/nifgen/system_tests/test_system_nifgen.py ________
src\nifgen\system_tests\test_system_nifgen.py:1: in
import nifgen
..\AppData\Local\Programs\Python\Python36-32\lib\site-packages\nifgen_init_.py:7: in
from nifgen.session import Session # noqa: F401
:961: in _find_and_load
???
:950: in _find_and_load_unlocked
???
:646: in _load_unlocked
???
:616: in load_backward_compatible
???
..\AppData\Local\Programs\Python\Python36-32\lib\site-packages_pytest\assertion\rewrite.py:212: in load_module
py.builtin.exec
(co, mod.dict)
..\AppData\Local\Programs\Python\Python36-32\lib\site-packages\nifgen\session.py:2747: in
class Session(SessionBase):
..\AppData\Local\Programs\Python\Python36-32\lib\site-packages\nifgen\session.py:2930: in Session
def configure_digital_edge_script_trigger(self, trigger_id, source, edge=enums.ScriptTriggerDigitalEdgeEdge.RISING):
..\AppData\Local\Programs\Python\Python36-32\lib\enum.py:324: in getattr
raise AttributeError(name) from None
E AttributeError: RISING
_______ ERROR collecting src/nifgen/system_tests/test_system_nifgen.py ________
src\nifgen\system_tests\test_system_nifgen.py:1: in
import nifgen
..\AppData\Local\Programs\Python\Python36-32\lib\site-packages\nifgen_init
.py:7: in
from nifgen.session import Session # noqa: F401
:961: in _find_and_load
???
:950: in _find_and_load_unlocked
???
:646: in _load_unlocked
???
:616: in load_backward_compatible
???
..\AppData\Local\Programs\Python\Python36-32\lib\site-packages_pytest\assertion\rewrite.py:212: in load_module
py.builtin.exec
(co, mod.dict)
..\AppData\Local\Programs\Python\Python36-32\lib\site-packages\nifgen\session.py:2747: in
class Session(_SessionBase):
..\AppData\Local\Programs\Python\Python36-32\lib\site-packages\nifgen\session.py:2930: in Session
def configure_digital_edge_script_trigger(self, trigger_id, source, edge=enums.ScriptTriggerDigitalEdgeEdge.RISING):
..\AppData\Local\Programs\Python\Python36-32\lib\enum.py:324: in getattr
raise AttributeError(name) from None
E AttributeError: RISING
!!!!!!!!!!!!!!!!!!! Interrupted: 2 errors during collection !!!!!!!!!!!!!!!!!!!
=========================== 2 error in 1.05 seconds ===========================

@marcoskirsch
Copy link
Member Author

When adding Triggers enum to the enums_addon.py;

Is there a branch on GitHub showing your change so we can try to reproduce?

@bhaswath
Copy link
Contributor

Created #622 with this change

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants